常见的 HTTP 头部
请求头
Accept-Encoding: Gzip;
// 客户端支持的压缩格式
Cookie: xxx;
// 携带给服务器的cookie信息
If-None-Match: W/"5e95e06d-619"
// 上一次请求如果有etag就会带上这个请求头(前提是没有Disabled cache)
If-Modified-Since: Tue, 14 Apr 2020 16:10:21 GMT
// (配合Last-Modified使用)
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.41 Safari/537.36
// 客户端系统信息
Host: xxx.com
// 服务器的域名(或者ip)和端口
Origin: http://xxx.com
// 指示服务器名称,并不包含任何路径信息
Referer: http://xxx.com/reg/login
// 客户端的URL(不包含#哈希和query参数)
Content-Type: xxx
// 告诉服务端资源是什么编码
application/json: 序列化后的 JSON 字符串
application/x-www-form-urlencoded: 浏览器的原生form表单, 提交的数据按照 key1=val1&key2=val2 的方式进行编码
multipart/form-data:
boundary
隔离,可以上传文件,也可以上传键值对(支持多个)text/html: html格式,一般出现在响应头里。浏览器根据返回的文件格式做出对应的展示
响应头
- Content-Encoding:gzip // 告诉浏览器使用gzip对资源进行解码
- Set-Cookie: name=tom;HttpOnly;Secure; // HttpOnly设置cookie并禁止js访问,防止xss攻击;Secure只在https下才能传输cookie
协商缓存:304
- ETag: W/"5e95e06d-619" // Nginx静态服务器发来的静态文件签名,浏览器在没有 “Disabled cache” 情况下,接收到 etag 后,同一个 url 第二次请求就会自动带上 “If-None-Match”【控制协商缓存方式1】
Last-Modified: Tue, 14 Apr 2020 16:10:21 GMT // 文件最后修改时间(配合If-Modified-Since使用)【控制协商缓存方式2】
强缓存:200
- Cache-Control: no-cache/max-age: 3600; // http/1.1控制强缓存的方式1(弥补expires缺陷)
- expires: 过期时间(以本地为准); // http/1.0 控制强缓存的方式2(注意缺陷)
- Connection: keep-alive // 告诉客户端服务器的tcp连接也是一个长连接【http/1.1默认添加】
- Content-Type: text/html;charset=utf-8 // 告诉浏览器返回的资源是什么编码
- X-Frame-Options: none // 是否允许嵌套在iframe中
TIP
DENY: 不允许任何。 SAMEORIGIN:同域名。 ALLOW-FROM http://xxx.com/:指定域名 add_header X-Frame-Options ALLOW-FROM http://whsir.com
- Strict-Transport-Security: max-age=31536000; includeSubDomains // 只能在https下访问 作用:防止中间人攻击
- 接下来的31536000秒(即一年)中,浏览器向 xxx.com或其子域名发送HTTP请求时,必须采用HTTPS来发起连接!
- 在接下来的一年中,如果 example.com 服务器发送的TLS证书无效,用户不能忽略浏览器警告继续访问网站