前言
HTTP请求头(headers)信息是HTTP请求中的一部分,它包含了客户端和服务器之间传递的附加信息,为什么要介绍这一部分,这是之前面试的时候,一个面试题,如果没去了解的话,可能就知道http请求头就只有请求头一个东西,其实不是的。HTTP头域包括通用头、请求头、响应头和实体头四个部分,本文将分别进行介绍这个四个部分。
一、通用头
通用头是HTTP请求和响应中都可以使用的头域,主要包括以下几种:
Cache-Control
:用于控制缓存行为,例如max-age=3600
表示缓存有效期为1小时。Connection
:用于控制连接行为,例如keep-alive
表示使用持久连接。Date
:表示消息发送的日期和时间。Pragma
:用于包含实现特定的指令,例如no-cache
表示不使用缓存。Trailer
:用于指示在分块传输编码中包含的额外头域。Transfer-Encoding
:用于指示传输编码方式,例如chunked
表示分块传输编码。Upgrade
:用于指示客户端希望升级到新的协议。Via
:用于表示消息经过的中间节点。
通用头主要关注的是请求的URL
二、请求头
请求头是客户端发送给服务器的附加信息,主要包括以下几种:
Accept
:用于指示客户端可以接受的MIME类型,例如text/html, application/json
表示接受HTML和JSON格式的数据。Accept-Charset
:用于指示客户端可以接受的字符集,例如utf-8
表示接受UTF-8编码的数据。Accept-Encoding
:用于指示客户端可以接受的内容编码,例如gzip, deflate
表示接受Gzip和Deflate编码的数据。Accept-Language
:用于指示客户端可以接受的语言,例如en-US
表示接受美国英语。Authorization
:用于包含客户端提供的身份验证信息,例如Basic dXNlcm5hbWU6cGFzc3dvcmQ=
表示使用基本身份验证,用户名为username
,密码为password
。Cookie
:用于发送客户端的cookie信息。Expect
:用于指示客户端期望服务器满足的要求,例如100-continue
表示客户端期望服务器在接收完请求头后返回100 Continue状态码。From
:用于指示发送请求的用户的电子邮件地址。Host
:用于指示请求的目标服务器,例如www.example.com
表示请求的目标服务器为www.example.com。If-Match
:用于指示客户端提供的实体标记,如果实体标记匹配,则请求成功。If-Modified-Since
:用于指示客户端提供的日期和时间,如果资源自该时间以来未被修改,则返回304 Not Modified状态码。If-None-Match
:用于指示客户端提供的实体标记,如果实体标记不匹配,则请求成功。Referer
:用于指示当前请求页面的来源页面地址。User-Agent
:用于指示客户端的信息,例如浏览器类型、操作系统等。
虽然请求头包含的信息很多,但是对于开发主要更关注的是请求头cookie,auth鉴权,可以通过这个信息,验证请求是否鉴权。
三、响应头
响应头是服务器发送给客户端的附加信息,主要包括以下几种:
Access-Control-Allow-Origin
:用于指示哪些源可以访问资源,例如*
表示允许所有源访问。Cache-Control
:用于控制缓存行为,例如max-age=3600
表示缓存有效期为1小时。Content-Encoding
:用于指示资源的内容编码,例如gzip
表示资源使用Gzip编码。Content-Language
:用于指示资源的语言,例如en-US
表示资源使用美国英语。Content-Length
:用于指示资源的长度,例如1234
表示资源长度为1234字节。Content-Location
:用于指示资源的URI,例如/index.html
表示资源的URI为/index.html。Content-Type
:用于指示资源的MIME类型,例如text/html; charset=utf-8
表示资源是HTML格式的UTF-8编码文本。Date
:表示响应发送的日期和时间。ETag
:用于指示资源的实体标记,例如"123456"
表示资源的实体标记为123456。Expires
:用于指示资源的过期时间,例如Thu, 01 Dec 1994 16:00:00 GMT
表示资源在1994年12月1日16:00:00过期。Last-Modified
:用于指示资源的最后修改时间,例如Tue, 15 Nov 1994 12:45:26 GMT
表示资源在1994年11月15日12:45:26被修改。Location
:用于指示资源的重定向URI,例如http://www.example.com
表示资源被重定向到http://www.example.comPragma
:用于包含实现特定的指令,例如no-cache
表示不使用缓存。Server
:用于指示服务器的信息,例如服务器类型、操作系统等。Set-Cookie
:用于设置客户端的cookie信息。Vary
:用于指示响应是否依赖于请求头中的哪些字段,例如Accept-Encoding
表示响应依赖于请求头中的Accept-Encoding字段。
更多关注响应数据格式:Content-Type:application/json;charset=UTF-8,用于接收服务返回的数据格式
四、实体头
实体头是针对HTTP请求和响应中的实体(资源)的附加信息,主要包括以下几种:
Allow
:用于指示资源支持的HTTP方法,例如GET, POST, HEAD
表示资源支持GET、POST和HEAD方法。Content-Encoding
:用于指示资源的内容编码,例如gzip
表示资源使用Gzip编码。Content-Language
:用于指示资源的语言,例如en-US
表示资源使用美国英语。Content-Length
:用于指示资源的长度,例如1234
表示资源长度为1234字节。Content-Location
:用于指示资源的URI,例如/index.html
表示资源的URI为/index.html。Content-MD5
:用于指示资源的MD5校验和,例如Q2hlY2sgSW50ZWdyaXR5IQ==
表示资源的MD5校验和为Swift
。Content-Range
:用于指示资源的部分内容,例如bytes 0-499/1234
表示返回资源的前500个字节。Content-Type
:用于指示资源的MIME类型,例如text/html; charset=utf-8
表示资源是HTML格式的UTF-8编码文本。Expires
:用于指示资源的过期时间,例如Thu, 01 Dec 1994 16:00:00 GMT
表示资源在1994年12月1日16:00:00过期。Last-Modified
:用于指示资源的最后修改时间,例如Tue, 15 Nov 1994 12:45:26 GMT
表示资源在1994年11月15日12:45:26被修改。
这一部分,也是前端请求关注比较多的一部分,可以通过实体头,查看前端实际请求的参数
总之,HTTP请求头(headers)信息是HTTP请求和响应中的重要组成部分,它们包含了客户端和服务器之间传递的附加信息。通过合理设置请求头,可以有效地控制HTTP请求的行为,提高网络应用的性能和可靠性。
我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!