打开google开发者工具找一个请求可以看到下图,主要包含四个部分
通用头:General Header
请求头:Request Headers
请求体:Request Body
响应头:Response Headers
通用头:General Header
1. Request URL
2. Request Method
3. Status Code
以上请求地址、请求方式、响应状态码比较简单不再赘述。
4. Remote Address
Remote Address代表的是当前HTTP请求的远程地址,即HTTP请求的源地址。HTTP协议在三次握手时使用的就是这个Remote Address地址,在发送响应报文时也是使用这个Remote Address地址。因此,如果请求者伪造Remote Address地址,他将无法收到HTTP的响应报文,此时伪造没有任何意义。这也就使得Remote Address默认具有防篡改的功能。
如果http请求经过代理服务器转发,用户的真实ip会丢失,为了避免这个情况,代理服务器通常会增加一个叫做x_forwarded_for的头信息,把连接它的客户端IP(即你的上网机器IP)加到这个头信息里,这样就能保证网站的web服务器能获取到真实IP
5. Referrer Policy
Referer提供访问来源的信息,告诉服务器,用户在访问当前资源之前的位置,发生传场景包含:加载图片、样式文件、JS文件、请求。浏览器会将当前网址作为Referer字段,放在 HTTP 请求的头信息发送。
引用策略(Referrer Policy)就是浏览器在请求头部定义 Referrer 的设置,也可以在<meta>标签中设置(<meta name="referrer" content="origin">),包含以下8种:
- no-referrer:不发送Referer字段。
- no-referrer-when-downgrade
如果从 HTTPS 网址链接到 HTTP 网址,不发送Referer字段,其他情况发送(包括 HTTP 网址链接到 HTTP 网址)。这是浏览器的默认行为。
- same-origin
链接到同源网址(协议+域名+端口 都相同)时发送,否则不发送。注意,https://foo.com链接到http://foo.com也属于跨域。
- origin
Referer字段一律只发送源信息(协议+域名+端口),不管是否跨域。
- strict-origin
如果从 HTTPS 网址链接到 HTTP 网址,不发送Referer字段,其他情况只发送源信息。
- origin-when-cross-origin
同源时,发送完整的Referer字段,跨域时发送源信息。
- strict-origin-when-cross-origin
同源时,发送完整的Referer字段;跨域时,如果 HTTPS 网址链接到 HTTP 网址,不发送Referer字段,否则发送源信息。
- unsafe-url
Referer字段包含源信息、路径和查询字符串,不包含锚点、用户名和密码
请求头:Request Headers
Accept
请求头用来告知服务器 客户端可以处理的内容类型(用MIME类型来表示),借助内容协商机制服务器从备选项中选择一项进行应用,并使用Content-Type应答头通知客户端它的选择。常用四类写法:
- <MIME_type>/<MIME_subtype>
单一精准的MIME类型,例如Accept: text/plain
- <MIME_type>/*
一类MIME类型,但是没有指明子类。例如image/*可以用来指代image/png,image/jpg以及任何其他的图片类型
- */*
任意类型的MIME类型
- ;q=(q因子权重)
值代表有限顺序,用相对质量价值表示,又称作权重。例如
Accept: text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8
Accept-Charset
请求头用来告知服务器 客户端可以处理的字符集类型,借助内容协商机制服务器从备选项中选择一项进行应用,并使用Content-Type应答头通知客户端它的选择(例如content-type:text/html; charset=utf-8),浏览器通常不会设置此项值,因为每种内容类型的默认值通常都是正确的。常用三类写法:
- <charset>
诸如 utf-8 或 iso-8859-15的字符集。例如Accept-Charset: iso-8859-1
- *
在这个消息头中未提及的任意其他字符集;'*' 用来表示通配符。例如Accept-Charset: *
- ;q= (q-因子权重)
值代表优先顺序,用相对质量价值表示,又称为权重。例如:Accept-Charset: utf-8, iso-8859-1;q=0.5, *;q=0.1
Accept-Encoding
请求头用来告知服务器 客户端可以处理的编码方式,常见:Accept-Encoding: gzip, deflate
Authorization
HTTP协议中的 Authorization 请求消息头含有服务器用于验证用户代理身份的凭证,通常会在服务器返回401 Unauthorized 状态码以及WWW-Authenticate 消息头之后在后续请求中发送此消息头. 一般登录后的token信息设置在Authorization中: authorization: 76e3815c-a57f-4ccc-b48c-1a6b4d09a0d1
Cookie
含有先前由服务器通过 Set-Cookie
首部投放并存储到客户端的 HTTP cookies。浏览器的本地存储
语法:<cookie-list>
一系列的名称/值对,形式为 <cookie-name>=<cookie-value>。
名称/值对之间用分号和空格 ('; ')隔 开。
Content-Type
指示资源的MIME类型 media type,告诉客户端实际返回的内容的内容类型
application/json、text/html、application/x-www-form-urlencoded
content-length
以 八位字节数组 (8位的字节)表示的请求体的长度
Host
表示当前请求要被发送的目的地,说白了就是当前请求目标资源的host,仅包括域名和端口号,如mdap.alipay.com。在任何类型请求中,request都会包含此header信息。
Origin
表示当前请求资源所在页面的协议和域名,如https://www.yuque.com,特别注意:
- 这个参数一般只存在于CORS跨域请求中,普通请求没有这个header!
Referer
表示当前请求资源所在页面的完整路径:协议+域名+路径+参数(不包含锚点信息),如https://www.yuque.com/xuyakai/f2e,所有类型的请求都包含此header。
待完成...
响应头:Response Headers
ETag
Accept-Ranges
服务器使用 HTTP 响应头 Accept-Ranges
标识自身支持范围请求(partial requests)。字段的具体值用于定义范围请求的单位。当浏览器发现 Accept-Ranges
头时,可以尝试继续中断了的下载,而不是重新开始。
包含:
none
不支持任何范围请求单位,由于其等同于没有返回此头部,因此很少使用。不过一些浏览器,比如IE9,会依据该头部去禁用或者移除下载管理器的暂停按钮。bytes
范围请求的单位是 bytes (字节)。
content-length
回应消息体的长度,以 字节 (8位为一字节)为单位
X-Powered-By
"X-Powered-By" is a common non-standard HTTP response header (most headers prefixed with an 'X-' are non-standard).
这个值是非标准的响应头(大多数X开头的头字段都是非标准的),它的意义用于告知网站是用何种语言或框架编写的,如果把这些信息暴露出去对站点不安全,我们可以通过隐藏或修改头信息的方法来阻止这些信息暴露
待完成...
请求体:Request Body
请求体包含请求所携带的参数或文件,没有请求参数的情况下该模块不显示
1. Request Payload
当一个请求的类型是POST/PUT时,若content-type设置为application/json,则请求参数以Request Payload进行传递并且不会出现在URL中
2. Form Data
当一个请求的类型是POST,若content-type设置为application/x-www-form-urlencoded,或者未指定content-type(则默认content-type为application/x-www-form-urlencoded)。 则请求参数以Form Data的形式进行传递并且不会出现在URL中
3. Query String Parameters
当一个请求的类型是GET/DELETE时,则请求参数以Query String Parameters的形式进行传递。且参数会以&分隔的方式出现在URL中,例(标红部分):https://yuque.com?name=hha&age=18.get请求参数无法设置为json格式,可以通过变幻为Form表单提交的方式让后台可以获取数组对象的格式