面试的时候经常被问到http请求:
一、http请求内容:
我们打开浏览器的网页,然后在地址输入网址,F12查看request请求,会发现,每个http请求的Headers都包含以下部分:Genaral,Request Headers,Response Headers,Request Payload。
General(不属于headers,只用于收集请求url和响应的status等信息):
Request Headers(请求头):
Response Headers(响应头):
Query String Parameters(查询字符串参数/请求参数):
二、关于HTTP Headers分类:
在Heanders中,有以下几部分:Genaral headers(和上面说的General不同,这个只是为了方便统计),Request Headers,Response Headers,Entity Headers(也是为了方便统计)。
所以一个完整的请求头或者响应头,应该除了自身,还包括 General Headers和Entity Headers:
Genaral headers | 同时适用于请求和响应消息,但与最终消息传输的数据无关的消息头。 | Cache-Control | 控制缓存的行为 |
Connection | 决定当前的事务完成后,是否会关闭网络连接;keep-alive 持续性的连接 由于TCP通信需要进行3次握手,所以可以建立一定程度上的持续性连接,减少进行3次握手的次数,提高通讯性能. | ||
Date | 创建报文的日期时间 | ||
Keep-Alive | 用来设置超时时长和最大请求数; Via——代理服务器的相关信息 | ||
Warning | 错误通知 | ||
Trailer | 允许发送方在分块发送的消息后面添加额外的元信息 | ||
Transfer-Encoding | 指定报文主体的传输编码方式 | ||
Upgrade | 升级为其他协议; | ||
Request Headers | 包含更多有关要获取的资源或客户端本身信息的消息头。 | Accept | 客户端可以处理的内容类型(允许的格式) |
Accept-Charset | 客户端可以处理的字符集类型 | ||
Accept-Encoding | 客户端能够理解的内容编码方式(压缩) | ||
Accept-Language | 客户端可以理解的自然语言 | ||
Authorization | Web 认证信息 | ||
Cookie | 通过Set-Cookie设置的值 | ||
DNT | 表明用户对于网站追踪的偏好 | ||
From | 用户的电子邮箱地址 | ||
Host | 请求资源所在服务器 | ||
If-Match | 比较实体标记(ETag) | ||
If-Modified-Since | 比较资源的更新时间 | ||
If-None-Match | 比较实体标记(与 If-Match 相反) | ||
If-Range | 资源未更新时发送实体 Byte 的范围请求 | ||
If-Unmodified-Since | 比较资源的更新时间(与 If-Modified-Since 相反) | ||
Origin | 表明了请求来自于哪个站点 | ||
Proxy-Authorization | 代理服务器要求客户端的认证信息 | ||
Range | 实体的字节范围请求 | ||
Referer | 对请求中 URI 的原始获取方(访问来源) | ||
TE | 指定用户代理希望使用的传输编码类型 | ||
Upgrade-Insecure-Requests | 表示客户端优先选择加密及带有身份验证的响应 | ||
User-Agent | 浏览器信息,客户端类型 IE 火狐 chrom Safari | ||
Response Headers | 包含有关响应的补充信息,如其位置或服务器本身(名称和版本等)的消息头。 | Accept-Ranges | 是否接受字节范围请求 |
Age | 消息对象在缓存代理中存贮的时长,以秒为单位 | ||
Clear-Site-Data | 表示清除当前请求网站有关的浏览器数据(cookie,存储,缓存) | ||
Content-Security-Policy | 允许站点管理者在指定的页面控制用户代理的资源 | ||
Content-Security-Policy-Report-Only ETag | 资源的匹配信息 | ||
Location | 令客户端重定向至指定 URI | ||
Proxy-Authenticate | 代理服务器对客户端的认证信息 | ||
Public-Key-Pins | 包含该Web 服务器用来进行加密的 public key (公钥)信息 | ||
Public-Key-Pins-Report-Only | 设置在公钥固定不匹配时,发送错误信息到report-uri | ||
Referrer-Policy | 用来监管哪些访问来源信息——会在 Referer 中发送 | ||
Server | HTTP 服务器的安装信息 | ||
Set-Cookie | 服务器端向客户端发送 cookie | ||
Strict-Transport-Security | 它告诉浏览器只能通过HTTPS访问当前资源 | ||
Timing-Allow-Origin | 用于指定特定站点,以允许其访问Resource Timing API提供的相关信息 | ||
Tk | 显示了对相应请求的跟踪情况 | ||
Vary | 服务器缓存的管理信息 | ||
WWW-Authenticate | 定义了使用何种验证方式去获取对资源的连接 | ||
X-XSS-Protection | 当检测到跨站脚本攻击 (XSS)时,浏览器将停止加载页面 | ||
Entity Headers | 包含有关实体主体的更多信息,比如主体长(Content-Length)度或其MIME类型。 | Allow | 客户端可以处理的内容类型,这种内容类型用MIME类型来表示 |
Content-Encoding | 用于对特定媒体类型的数据进行压缩 | ||
Content-Language | 访问者希望采用的语言或语言组合 | ||
Content-Length | 发送给接收方的消息主体的大小,即请求信息内容长度 | ||
Content-Location | 替代对应资源的 URI | ||
Content-Range | 实体主体的位置范围 | ||
Content-Type | 告诉客户端实际返回的内容的内容类型和编码,即请求数据类型 application/x-www-form-urlencoded 字符串, multipart/form-data 二进制, text/html;charset=UTF-8 | ||
Expires | 包含日期/时间, 即在此时候之后,响应过期 | ||
Last-Modified | 资源的最后修改日期时间 |