常见的状态码有哪些?
- 1xx 服务端接受到请求
- 2xx 请求成功(200)
- 3xx 资源重定向 (301 永久重定向;302临时重定向;304资源未改变,读取缓存)
- 4xx 客户端错误 (404 资源不存在; 403 权限不足)
- 5xx 服务端错误 (500 服务端错误;502网关超时)
HTTP headers 有哪些
-
request headers
- accept 能接收的格式
- accept-encoding 能接收的压缩算法
- accept-language 能接收的语言
- connection: keep-alive 一次链接tcp多次使用
- cookie
- ua 浏览器相关的内容
-
response headers
- context-type 内容类型
- context-encoding 内容压缩算法
- context-length 内容长度
- set-cookie 服务端设置的cookie
request headers和response headers其实都是相对应的, header不需要说的很全, 正常能答出五六个就行, 所以列举了几个, 如果想多答点,把缓存的加上
上面没提 缓存相关的; 如果对缓存不是很清楚最好不要加, 加了下一题很大几率就是缓存题
缓存
不全, 只讲最常用的
- 强缓存
cache-control: max-age no-cache no-store
- max-age 最大缓存时间
- no-cache 不走强缓存, 可接受协商缓存
- no-store 完全不缓存
- 协商缓存
etag last-modified
-
etag 类似资源的唯一标识, 和我们前端给文件加hash一个道理
-
last-modified 文件的最后修改时间
-
强缓存
协商缓存
- etag 优先 last-modified, 有etag就使用的是etag, 因为etag更加精确, last-modified精确只有到秒级,
整理缓存流程
刷新对缓存的影响
- 通常操作: url跳转, 浏览器前进后退(正常缓存)
- 普通刷新: F5/command+r 浏览器按钮刷新, 右击菜单刷新(不走强制缓存, 只走协商缓存)
- 强制刷新: ctr+F5/command+shift+r(不缓存)
https 加密过程
- 对称加密
- 浏览器发一个请求
- 服务端给一个密钥
- 浏览器发请求携带信息通用密钥加密
- 服务端通过相同的密钥解密
- 服务端给浏览器返回消息,通过密钥加密
- 浏览器通过密钥解密
上面的加密有个问题, 一旦传输过程被劫持, 密钥被窃取, 服务端和浏览器通信的消息都有可能被破解
- 非对称加密
- 浏览器发一个请求
- 服务端给一个公钥 (服务端有两个密钥,一个公钥,一个私钥; 公钥加密, 私钥解密; 私钥加密, 公钥解密)
- 浏览器发生请求通过公钥匙加密
- 服务器接收通过私钥解密
- 服务端返回消息, 通过私钥加密
- 浏览器通过公钥解密
上面的加密有个问题:一旦传输过程被劫持, 公钥被窃取, 服务端的消息就有很大可能被破解
https采用的加密方式: 非对称和对称加密混合
-
通过非对称加密, 把公钥给浏览器
-
就算浏览器的公钥被劫持, 当浏览器的消息是安全的, 公钥加密的需要私钥加密
-
所有这是, 浏览器把一个 密钥传输给 服务器, 这时这个密钥是安全的
-
然后大家就用这个密钥进行对称加密的传输方式