Appearance
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-Type
、Authorization
和X-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
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