• 关于http协议中的各种请求头、请求类型的作用以及用途


    在HTTP协议中,请求头(HTTP Headers)用于在客户端(如浏览器或其他HTTP客户端)和服务器之间传递附加的信息。不同的请求头有不同的作用和用途,它们在HTTP请求的不同类型(如GET、POST、PUT等)中的使用方式和意义也有所不同。

    下面将详细介绍常见的HTTP请求类型和一些重要的请求头的作用和区别。

    HTTP请求类型(方法)

    1. GET

      • 功能: 请求从服务器获取资源。
      • 特点:
      • 请求数据附加在URL后面,长度有限制。
      • 只能获取数据,不能修改服务器资源。
      • 通常用于读取数据而不会影响服务器状态。
      • 典型用法:

    GET /path/resource HTTP/1.1
    Host: example.com

    1. POST

      • 功能: 向服务器提交数据,通常用于创建或修改资源。
      • 特点:
      • 请求数据包含在请求体中,没有长度限制。
      • 可以修改服务器上的资源。
      • 支持复杂的数据结构,如表单数据或文件上传。
      • 典型用法:

    POST /path/resource HTTP/1.1
    Host: example.com
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 27

    key1=value1&key2=value2

    1. PUT

      • 功能: 向服务器上传或替换资源。
      • 特点:
      • 请求数据包含在请求体中,用于替换目标资源。
      • 如果目标资源不存在,可以创建一个新的资源。
      • 通常用于更新资源的完整内容。
      • 典型用法:

    PUT /path/resource HTTP/1.1
    Host: example.com
    Content-Type: application/json
    Content-Length: 18

    {“key”: “newValue”}

    1. DELETE

      • 功能: 请求服务器删除指定资源。
      • 特点:
      • 用于删除资源。
      • 通常不会有请求体。
      • 典型用法:

    DELETE /path/resource HTTP/1.1
    Host: example.com

    1. HEAD

      • 功能: 请求与GET类似,但只返回响应头,不返回响应体。
      • 特点:
      • 用于检查资源的元数据(如内容长度、类型等)。
      • 常用于测试或获取资源的基本信息而不下载内容。
      • 典型用法:

    HEAD /path/resource HTTP/1.1
    Host: example.com

    1. PATCH

      • 功能: 部分更新服务器资源。
      • 特点:
      • 请求数据包含在请求体中,仅修改资源的部分内容。
      • 不同于PUT,PATCH只应用于部分更改。
      • 典型用法:

    PATCH /path/resource HTTP/1.1
    Host: example.com
    Content-Type: application/json
    Content-Length: 18

    {“key”: “newValue”}

    1. OPTIONS

      • 功能: 请求服务器返回资源所支持的HTTP方法。
      • 特点:
      • 不请求资源,只是询问服务器的功能。
      • 常用于CORS(跨域资源共享)中的预检请求。
      • 典型用法:

    OPTIONS /path/resource HTTP/1.1
    Host: example.com

    常见的HTTP请求头(Headers)

    1. 通用头(General Headers)

      • Host:
      • 指定请求资源所在的服务器主机名和端口。
      • 必须在HTTP/1.1请求中包含。
      • 例子:

    Host: example.com

    •	User-Agent:
    •	识别客户端的用户代理(如浏览器类型和版本)。
    •	例子:
    

    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36

    •	Accept:
    •	指定客户端可接受的响应内容类型。
    •	例子:
    

    Accept: text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, /;q=0.8

    •	Accept-Encoding:
    •	指定客户端可接受的内容编码(如压缩方式)。
    •	例子:
    

    Accept-Encoding: gzip, deflate, br

    •	Accept-Language:
    •	指定客户端可接受的自然语言。
    •	例子:
    

    Accept-Language: en-US,en;q=0.5

    1. 请求头(Request Headers)

      • Authorization:
      • 用于客户端向服务器提供身份验证信息。
      • 例子:

    Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l

    •	Cookie:
    •	发送客户端的存储的Cookie信息到服务器。
    •	例子:
    

    Cookie: sessionId=abc123; userId=42

    •	Content-Type:
    •	指定请求体的内容类型(如MIME类型)。
    •	在POST和PUT请求中非常重要。
    •	例子:
    

    Content-Type: application/json

    •	Content-Length:
    •	指定请求体的字节长度。
    •	例子:
    

    Content-Length: 348

    •	Referer:
    •	告诉服务器请求的来源页面。
    •	例子:
    

    Referer: https://www.example.com/previous-page

    1. 特定用法的头(Specific Purpose Headers)

      • If-Modified-Since:
      • 用于条件请求,只有在指定的时间之后资源被修改过,服务器才会返回资源。
      • 例子:

    If-Modified-Since: Wed, 21 Oct 2021 07:28:00 GMT

    •	If-None-Match:
    •	用于条件请求,基于资源的ETag值。
    •	例子:
    

    If-None-Match: “e1a9-5ab791ed”

    •	Range:
    •	用于请求部分内容,常用于断点续传。
    •	例子:
    

    Range: bytes=500-999

    •	Origin:
    •	指示跨域资源请求的来源。
    •	例子:
    

    Origin: https://www.example.com

    •	X-Requested-With:
    •	通常用于标识Ajax请求。
    •	例子:
    

    X-Requested-With: XMLHttpRequest

    四、请求头的使用场景和注意事项

    •	缓存控制: 通过头如 Cache-Control、If-Modified-Since 等控制浏览器和服务器之间的缓存机制。
    •	安全: 使用 Authorization 和 Cookie 头来管理身份验证和会话,确保通信的安全性。
    •	内容协商: 通过 Accept、Accept-Language 等头,客户端可以指示希望以何种格式和语言接收响应。
    •	性能优化: 使用 Range 头进行分块下载,可以优化网络资源的使用。
    

    参考资料

    •	MDN Web Docs - HTTP Headers
    •	MDN Web Docs - HTTP Request Methods
    •	RFC 7231 - HTTP/1.1 Semantics and Content
    
  • 相关阅读:
    SpringBoot监控@EnableAdminServer
    1445 雉兔同笼
    HMM隐马尔可夫模型
    页面首次进入时可能会有白屏的问题
    【R语言】对一个Plot绘制多个图,并且每个图单元也包含多个图
    python — 上下文管理器(例子:python连接数据库)
    3. HTML的语法规范
    前端必看!css中常用单位及区别
    EBS R12.2.0升级到R12.2.6
    一体化伺服电机在三轴钻孔机中的应用
  • 原文地址:https://blog.csdn.net/qq_43158726/article/details/139870076