一个HTTP请求都包含了什么

打开google开发者工具找一个请求可以看到下图,主要包含四个部分

image.png

通用头: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种:

  1. no-referrer:不发送Referer字段。
  2. no-referrer-when-downgrade

如果从 HTTPS 网址链接到 HTTP 网址,不发送Referer字段,其他情况发送(包括 HTTP 网址链接到 HTTP 网址)。这是浏览器的默认行为。

  1. same-origin

链接到同源网址(协议+域名+端口 都相同)时发送,否则不发送。注意,https://foo.com链接到http://foo.com也属于跨域。

  1. origin

Referer字段一律只发送源信息(协议+域名+端口),不管是否跨域。

  1. strict-origin

如果从 HTTPS 网址链接到 HTTP 网址,不发送Referer字段,其他情况只发送源信息。

  1. origin-when-cross-origin

同源时,发送完整的Referer字段,跨域时发送源信息。

  1. strict-origin-when-cross-origin

同源时,发送完整的Referer字段;跨域时,如果 HTTPS 网址链接到 HTTP 网址,不发送Referer字段,否则发送源信息。

  1. unsafe-url

Referer字段包含源信息、路径和查询字符串,不包含锚点、用户名和密码

请求头:Request Headers

Accept

请求头用来告知服务器 客户端可以处理的内容类型(用MIME类型来表示),借助内容协商机制服务器从备选项中选择一项进行应用,并使用Content-Type应答头通知客户端它的选择。常用四类写法:

  1. <MIME_type>/<MIME_subtype>

单一精准的MIME类型,例如Accept: text/plain

  1. <MIME_type>/*

一类MIME类型,但是没有指明子类。例如image/*可以用来指代image/png,image/jpg以及任何其他的图片类型

  1. */*

任意类型的MIME类型

  1. ;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),浏览器通常不会设置此项值,因为每种内容类型的默认值通常都是正确的。常用三类写法:

  1. <charset>

诸如 utf-8 或 iso-8859-15的字符集。例如Accept-Charset: iso-8859-1

  1. *

在这个消息头中未提及的任意其他字符集;'*' 用来表示通配符。例如Accept-Charset: *

  1. ;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

浏览器缓存ETag

 

Accept-Ranges

服务器使用 HTTP 响应头 Accept-Ranges 标识自身支持范围请求(partial requests)。字段的具体值用于定义范围请求的单位。当浏览器发现 Accept-Ranges 头时,可以尝试继续中断了的下载,而不是重新开始。

包含:

  1. none不支持任何范围请求单位,由于其等同于没有返回此头部,因此很少使用。不过一些浏览器,比如IE9,会依据该头部去禁用或者移除下载管理器的暂停按钮。
  2. 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表单提交的方式让后台可以获取数组对象的格式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值