Http 请求头

HTTP请求头部提供了关于客户端的信息以及客户端对服务器所请求内容的具体要求。以下是一些常见的HTTP请求头部标准属性:

  1. Accept: 指定客户端能够处理的响应内容类型(MIME类型),如text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8表示优先接受HTML文档,但也接受其他类型。
  2. Accept-Charset: 客户端可接受的字符集,例如utf-8, iso-8859-1;q=0.5
  3. Accept-Encoding: 客户端能够理解的内容编码,如gzip, deflate, br表示支持gzip、deflate和brotli压缩。
  4. Accept-Language: 客户端偏好的自然语言,如en-US,en;q=0.9,优先英语(美国)。
  5. Authorization: 用于HTTP身份验证,包含用户的认证信息。
  6. Cache-Control: 控制请求和响应的缓存机制,例如no-cache指示不要使用缓存的版本。
  7. Connection: 指示对于当前事务完成后,是否关闭网络连接或继续保持打开状态(如keep-alive)。
  8. Content-Length: 发送数据的实体主体的字节长度,适用于POST或PUT等包含实体的请求。
  9. Content-Type: 发送数据的MIME类型,用于POST请求中的数据格式标识,如application/x-www-form-urlencoded
  10. Cookie: 包含之前服务器设置的cookie,用于维护会话状态或用户追踪。
  11. Host: 请求的互联网主机和端口号,通常对应URL的主机部分。
  12. If-Modified-Since: 客户端上次获取资源的日期和时间,用于条件性请求,检查资源是否已更改。
  13. If-None-Match: 客户端缓存中的实体标签(ETag),用于验证资源是否未被修改。
  14. Origin: 发起请求的页面的源信息,用于CORS(跨源资源共享)请求。
  15. Referer: 引导到当前请求页面的URI,用于跟踪来源。
  16. User-Agent: 客户端的信息,包括浏览器类型、版本、操作系统等。
  17. Upgrade-Insecure-Requests: 请求从HTTPS降级到HTTP,值为1表示客户端愿意接受不安全的连接升级。

这些请求头帮助服务器更好地理解和响应客户端的需求,不同的应用和服务可能会使用更多的特定头部字段。

Http 响应头

HTTP响应头部包含了服务器发回给客户端的附加信息,用于描述响应的状态及细节。以下是一些常见的HTTP响应头部标准属性:

  1. Cache-Control: 控制响应的缓存机制,如最大缓存时间 (max-age)、是否允许缓存 (public/private) 等。

  2. Content-Type: 指定响应内容的MIME类型,如text/htmlapplication/json等,让客户端知道如何处理接收到的内容。

  3. Content-Length: 表示响应主体的字节长度,有助于客户端正确接收完整的响应内容。

  4. Date: 响应生成的日期和时间,按照RFC 822格式。

  5. Expires: 响应过期时间,之后内容不再有效,会被认为是陈旧的,但现代浏览器更倾向于使用Cache-Control

  6. ETag (Entity Tag): 资源的一个特定版本的标识符,用于验证资源是否有变化。

  7. Last-Modified: 资源最后一次被修改的日期和时间,用于缓存验证。

  8. Location: 在需要重定向时使用,提供新的资源位置URL。

  9. Server: 服务器软件的名称和版本信息。

  10. Set-Cookie: 用于设置或更新cookie,向客户端发送cookie信息。

  11. Retry-After: 当资源不可用时,指示客户端应该在多久之后再次尝试请求。

  12. Vary: 列出会影响响应内容的请求头字段,告知代理服务器在缓存时需要考虑这些字段。

  13. Pragma: 虽然是HTTP/1.0的遗留字段,但在某些情况下仍可能见到,如Pragma: no-cache指示不应缓存响应。

  14. Age: 响应在代理缓存中已经存在的秒数,用于计算新鲜度。

  15. Content-Encoding: 响应内容的编码方式,如gzip或deflate,表明数据是如何压缩的。

  16. Transfer-Encoding: 用于告知客户端数据传输的编码形式,如chunked表示分块传输。

  17. Connection: 控制持久连接,如keep-alive表示保持连接打开供后续请求使用。

  18. Content-Disposition

    Content-Disposition是一个HTTP响应头字段,用于指示接收方(通常是浏览器)如何处理返回的实体内容。它主要应用于两个场景:决定内容是直接在浏览器中显示还是作为附件下载,以及为下载的文件建议一个默认文件名。以下是Content-Disposition属性的详细说明:

    1. Type: 定义了实体内容的呈现方式,有两种主要的类型:

      • inline: 表示内容应该在浏览器中直接展示,这是默认行为,适用于HTML文档、图片、文本等可以直接查看的内容。
      • attachment: 指示内容应作为附件处理,即触发浏览器的下载行为,而不是直接显示。适用于文件下载场景。
    2. filename: (可选)当使用attachment类型时,可以通过filename参数来指定建议的文件名,该文件名会被大多数浏览器用于下载对话框的默认文件名。例如:

      Http

      1
      1Content-Disposition: attachment; filename="example.pdf"

      这会让浏览器下载文件时,默认提议保存为example.pdf

    3. Filename (非标准扩展)*: 在某些情况下,为了兼容不同系统和字符集,可能会使用filename*参数,并采用RFC 5987规定的格式来指定文件名,支持非ASCII字符。例如:

      Http

      1
      1Content-Disposition: attachment; filename="example.pdf"; filename*=UTF-8''%E4%BD%9C%E4%B8%9A.pdf

      这样可以正确处理包含非英文字符的文件名。

    Content-Disposition头字段使得服务端能更灵活地控制用户如何与响应内容互动,特别是在文件下载功能上,确保了用户体验的一致性和便利性。

这些只是其中的一部分,实际上HTTP响应头部包含更多选项,具体取决于服务器、应用需求以及所传输内容的特性。