面试专题:简析http请求头(headers)四部分

2024-01-27 13:07:47 浏览数 (1)

前言

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.com
  • Pragma:用于包含实现特定的指令,例如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腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

0 人点赞