Skip to content

常见的 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下访问 作用:防止中间人攻击
  1. 接下来的31536000秒(即一年)中,浏览器向 xxx.com或其子域名发送HTTP请求时,必须采用HTTPS来发起连接!
  2. 在接下来的一年中,如果 example.com 服务器发送的TLS证书无效,用户不能忽略浏览器警告继续访问网站