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

ops/2024/9/22 22:47:54/
http://www.w3.org/2000/svg" style="display: none;">

在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

http://www.ppmy.cn/ops/50907.html

相关文章

Java——IDEA使用

一、IDEA介绍 IntelliJ IDEA 是 JetBrains 公司开发的一款功能强大的集成开发环境(IDE),主要用于 Java 编程语言,但也支持多种其他语言和框架。由于其强大的功能和灵活性,IntelliJ IDEA 被广泛应用于软件开发领域&…

Java用文件流mask文本文件某些特定字段

思路 在Java中,如果你想要掩码(mask)文本文件中的某些特定字段,你可以按照以下步骤进行: 读取文本文件内容。找到并识别需要掩码的字段。用特定的掩码字符(如星号*)替换这些字段。将修改后的内…

RabbitMQ 相关概念

引言 什么是消息中间件 消息是指在应用间传送的数据,包含文本字符串、JSON等。消息队列中间件(MQ)指利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型…

51单片机STC89C52RC——4.1 独立按键(数码管显示按键值)

目录 目录 目的 一,STC单片机模块 二,矩阵按键模块 2.1 针脚定义 ​编辑 2.2 矩阵按键位置 2.3 如何理解按键按下后针脚的高低电平 2.3.1 错误理解1 2.3.2 错误理解2 2.3.3 正确判定按下的是那个按键的逻辑 2.3.4 判定按键按下的依次扫描程…

天津这场智博会,成了智能时代的风向标

毫无疑问,这是一场智能产业的盛宴。 2024年6月20日至23日,国家会展中心(天津)迎来了一场智能科技领域的盛会——世界智能产业博览会:这场以“智行天下、能动未来”为主题的博览会,汇聚了全球49个国家和地区…

利用Python调用闲鱼商品详情API接口

引言 在当今数字化时代,API接口已成为开发者获取数据的重要手段。本文将介绍如何使用Python语言调用闲鱼平台的商品详情API接口,获取商品的详细信息。 准备工作 在开始之前,请确保你已经拥有以下条件: Python环境(…

C语言杂谈:结构体内存对齐

#include<stdio.h> struct S1 {char c1;int i;char c2; }; struct S2 {char c1;char c2;int i; }; int main() {printf("%d\n", sizeof(struct S1));printf("%d\n", sizeof(struct S2));return 0; } 看上面的代码&#xff0c;我们想想应该会输出什么…

web前端JS高阶面试题

问题2: 循环引用会出错 / export function deepClone1(target) { return JSON.parse(JSON.stringify(target)) } / 获取数据的类型字符串名 / function getType(data) { return Object.prototype.toString.call(data).slice(8, -1) } / 2). 面试基础版本 解决问题1: 函数属性还…