Skip to content

Request Headers

Request Headers成为请求头,是Response Header的对应。请求头顾名思义就是客户端请求时,向服务端发送的头部信息。它们包含了关于请求、响应或者其他的发送信息。请求头允许客户端向服务器传递额外的信息,这些信息可能对服务器处理请求非常重要。请求头由键值对组成,每个键值对之间用冒号分隔。
请求头可以用于多种目的,包括提供有关客户端的信息、指示服务器如何处理请求、提供认证信息、控制缓存行为等。正确地使用请求头可以提高HTTP通信的效率和安全性。
有的请求头信息是浏览器自送创建的,处于安全性考虑无法修改,但在自定义的客户端中这种限制不会存在。有时候,错误的配置请求头可能导致跨域拦截,所以当存在自定义请求头的时候,确保后端配置了Allow-Headers。

Allow-Headers

Allow-Headers 是一个HTTP响应头字段,它通常用于CORS(跨源资源共享)中,指定在预检请求(preflight request)中允许的HTTP请求头。当浏览器发起一个可能包含自定义头字段的跨源请求时,它会先发送一个预检请求到目标服务器,询问服务器是否允许这些特定的头字段。 例如,如果一个网页尝试向另一个域发送一个包含自定义头字段的请求,浏览器的CORS机制会首先发送一个带有OPTIONS方法的预检请求,其中包含了一个Access-Control-Request-Headers请求头,列出了所有自定义的头字段。服务器在响应中可以使用Allow-Headers响应头,告知浏览器哪些头字段是被允许的。 这里是一个Allow-Headers响应头的例子:

Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With

在这个例子中,服务器告诉浏览器,它允许跨源请求中包含Content-TypeAuthorizationX-Requested-With这三个自定义头字段。 Allow-Headers响应头通常与Access-Control-Allow-Methods响应头一起使用,后者指定了允许的HTTP方法(如GET、POST等)。 请注意,Allow-Headers响应头应该只出现在CORS预检请求的响应中,而不是所有的HTTP响应。如果服务器没有设置CORS策略,或者跨源请求不包含自定义头字段,那么通常不会看到Allow-Headers响应头。

常见的请求头

很多请求头是浏览器自动添加的,这是为了提供必要的信息给服务器。但有时候,我们需要自定义请求头,以满足特定的需求。例如,在发送请求时,我们可以添加自定义的请求头,以便服务器能够识别和处理我们的请求。

Accept

Accept 是一个HTTP请求头,用于指定客户端能够接收的内容类型。它通常被用来指示服务器返回哪些类型的内容,例如HTML、JSON、XML等。

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

Accept-Encoding

Accept-Encoding 是一个HTTP请求头,用于指定客户端能够接收的内容编码类型。它通常被用来指示服务器返回哪些类型的内容编码,例如gzip、deflate、br等。

Accept-Encoding: gzip, deflate, br

Accept-Language

Accept-Language 是一个HTTP请求头,用于指定客户端能够接收的自然语言类型。它通常被用来指示服务器返回哪些类型的内容,例如中文、英文、日文等。

Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,ja;q=0.7

Cache-Control

Cache-Control 是一个HTTP请求头,用于指定客户端或服务器能够或不能做什么缓存操作。它通常被用来指示浏览器或服务器如何处理缓存,例如是否使用缓存、缓存多久等。

Cache-Control: no-cache

Connection

Connection 是一个HTTP请求头,用于指定与请求关联的连接选项。它通常被用来指示浏览器或服务器如何处理连接,例如是否使用持久连接、保持连接多久等。

Connection: keep-alive

Content-Length

Content-Length 是一个HTTP请求头,用于指定请求体的长度。它通常被用来指示服务器如何处理请求体,例如请求体的大小等。

Content-Length: 100

Content-Type

Content-Type 是一个HTTP请求头,用于指定请求体的内容类型。它通常被用来指示服务器如何处理请求体,例如请求体的类型(如text/plain、application/json等)等。

Content-Type: application/json

Cookie 是一个HTTP请求头,用于指定与请求关联的Cookie信息。它通常被用来指示服务器如何处理Cookie信息,例如哪些Cookie信息是有效的等。

Cookie: name=value; name2=value2

Host

Host 是一个HTTP请求头,用于指定请求的主机名和端口号。它通常被用来指示服务器如何处理请求,例如请求的主机名和端口号等。

Host: www.example.com:8080

User-Agent

User-Agent 是一个HTTP请求头,用于指定客户端的User-Agent信息。它通常被用来指示服务器如何处理请求,例如客户端的操作系统、浏览器版本等。

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

X-Forwarded-For

X-Forwarded-For 是一个HTTP请求头,用于指定请求的来源IP地址。它通常被用来指示服务器如何处理请求,例如请求的来源IP地址等。

        
    X-Forwarded-For: 127.0.0.1

X-Requested-With

X-Requested-With 是一个HTTP请求头,用于指定请求的类型。它通常被用来指示服务器如何处理请求,例如请求的类型(如XMLHttpRequest、Fetch API等)等。

    X-Requested-With: XMLHttpRequest

X-CSRF-Token

X-CSRF-Token 是一个HTTP请求头,用于指定请求的CSRF令牌。它通常被用来指示服务器如何处理请求,例如请求的CSRF令牌等。

    X-CSRF-Token: 1234567890

X-Forwarded-Proto

X-Forwarded-Proto 是一个HTTP请求头,用于指定请求的协议类型。它通常被用来指示服务器如何处理请求,例如请求的协议类型(如HTTP、HTTPS等)等。

    X-Forwarded-Proto: https

X-Forwarded-Host

X-Forwarded-Host 是一个HTTP请求头,用于指定请求的主机名和端口号。它通常被用来指示服务器如何处理请求,例如请求的主机名和端口号等。

    X-Forwarded-Host: www.example.com:8080

X-Forwarded-Port

X-Forwarded-Port 是一个HTTP请求头,用于指定请求的端口号。它通常被用来指示服务器如何处理请求,例如请求的端口号等。

    X-Forwarded-Port: 8080

Origin

Origin 是一个HTTP请求头,用于指定请求的来源页面。它通常被用来指示服务器如何处理请求,例如请求的来源页面等。

    Origin: https://www.example.com

Referer

Referer 是一个HTTP请求头,用于指定请求的来源页面。它通常被用来指示服务器如何处理请求,例如请求的来源页面等。但Referer实际上是错误的拼写,尽管Referer的拼写是错误的,但在HTTP规范和相关文档中,它仍然被拼写为Referer。在编写代码或配置HTTP请求时,应该使用这个错误的拼写,以确保与现有的系统和标准兼容。

    Referer: https://www.example.com/page.html

Referer和Origin存在差异,Referer 头用于指示请求的来源,即用户在访问当前资源之前所在的页面。Referer 头是由浏览器自动添加的,它可以被用户或某些浏览器扩展禁用。 这个头字段对于跟踪用户的行为、防止CSRF(跨站请求伪造)攻击等非常有用。而Origin 头主要用于CORS(跨源资源共享)请求,它指示发出请求的源站点的域名、协议和端口。 它通常只包含源站点的域名和端口,不包括路径和查询参数。
Origin 头是由浏览器自动添加的,用于在跨源请求中提供安全限制,确保请求只来自允许的源。
这个差别记好了,面试要考的,这里就是网站防盗链的核心实现原理。

Authorization

Authorization 是一个HTTP请求头,用于指定客户端的认证信息。它通常被用来指示服务器如何处理请求,例如客户端的认证信息等。

    Authorization: Bearer token

仅用于培训和测试,通过使用本站代码内容随之而来的风险与本站无关。版权所有,未经授权请勿转载,保留一切权利。
ICP备案号:滇ICP备15009214号-13   公安网备:滇公网安备 53312302000061号