HTTP请求头和响应头

优快云话题挑战赛第2期https://marketing.youkuaiyun.com/p/7b6697fd9dd3795a268d1a6f2fe75012
参赛话题:学习笔记

浏览器和天气系统看起来是很简单的请求和响应的过程,但实际上这个过程并不简单,也就是说浏览器向天气系统发送请求的时候并不是只发送了url和参数,还有一些你看不见摸不着的东西也传过去了,真的是暗度陈仓,防不胜防。同样天气系统在响应浏览器的时候,并不是仅仅传送过来天气信息就完事了,还有很多看不见摸不着的东西也送过来了。那么这些看不见摸不着的东西,到底是什么东西?还有他们这样暗中交易,就没有人管了吗?

浏览器作为客户端,天气系统作为服务端,他们之间能够正常的通信,主要是依靠HTTP协议,这个HTTP协议就像客户端和服务端两方签订的契约,这份契约规定了客户端需要传哪些参数到服务端,同样也规定了服务端需要响应哪些参数到客户端,这些参数就是上文提到的那些看不见摸不着的东西,正所谓一物降一物,抓包工具的出现,让这些飘浮在字节上的幽灵无处遁形,Chrome浏览器自带抓包工具,按F12可打开调试界面

1:点击Network
2:点击All
3:找到并单击请求url
4:消息头
5:响应头
6:请求头

这里的消息头、响应头和请求头就是上文提到的那些看不见摸不着的东西,接下来详解这3个头:

消息头

消息头里包括了客户端请求时的url和请求方式以及服务端响应的状态码,远程地址是服务器的ip和端口,这个远程地址会被翻译成方便记忆的域名www.webxml.com.cn。
这里的Referrer-Policy就好玩了,通常客户端发送请求给服务端,服务端默认情况下是能查到是哪个客户端发来的请求,这样设置也很合理,毕竟有朋自远方来,我总得知道这位朋友是谁吧。可是远方的朋友来了,总是像调查人口一样事无巨细的都问个彻底,难免使人反感,因此,远方的朋友来的时候使用Referrer-Policy表明你可以问哪些内容,不做特别说明的话,真的会把身份证号码报给你,这里Referrer-Policy声明为strict-origin-when-cross-origin,就可以分为亲属,好朋友,陌生人三种情况,同源亲属可以完全获知对方的信息,好朋友只能得到对方的姓名,陌生人则无可奉告。

响应头

响应头主要对响应的内容进行说明,比如客户端在请求数据的时候,在请求头中通过Accept声明了希望服务端可以返回哪些文件类型的内容,那么服务端真正在响应数据的时候肯定要表明当前的响应内容属于哪种文件类型,比如,Content-Type的值为“text/xml;charset=utf-8”,告诉客户端,当前的响应内容是“text/xml”格式的,内容编码是“utf-8”的,客户端知晓这些说明,更方便的在前端处理这些响应内容。需要说明的是客户端声明可接受何种文件格式的内容,服务端返回对应格式的内容,这个过程就固定下来,不会出现每次相同的请求返回不同文件格式的情况,这就是客户端和服务端之间的契约。

请求头

请求头是客户端通过url请求数据的时候,对请求消息进行附加说明,使请求消息的内涵更丰富,比如“Accept”的值是“text/html,application/xhtml+xml,application/xml;q=0.9,/,q=0.8”,它告诉服务端可以响应哪些格式的数据,“text/html”代表最好是html格式的文件,其次xhtml+xml,实在不行就响应xml格式的文件吧。但是吧,服务端能力很强大,它能响应给客户端的文件格式千奇百怪,当然也包括客户端规定的那几个,如果服务器既能响应json格式的内容,又能响应html格式的内容,那么客户端会作何选择呢?这种问题的解决方法也很简单,客户端喜欢哪种格式就给哪种格式加权重,权重的值越大,返回该格式的文件的可能性就越大,具体就是在“Accept”的值中规定“q=0.9”代表权重为0.9,其中“Accept”的值中也有“q=0.8”,它代表“q=0.8”前的内容“/”(其他格式)的权重为0.8,显然0.9大于0.8,优先响应“q=0.9”前的文件格式。

除此之外,请求头可供取值的属性罗列如下:

Accept: 浏览器支持的 MIME 媒体类型, 比如 text/html,application/json,image/webp,/ 等

Accept-Encoding: 浏览器发给服务器,声明浏览器支持的编码类型,gzip, deflate

Accept-Language: 客户端接受的语言格式,比如 zh-CN

Connection: keep-alive , 开启HTTP持久连接

Host:服务器的域名

Origin:告诉服务器请求从哪里发起的,仅包括协议和域名 CORS跨域请求中可以看到response有对应的

header,Access-Control-Allow-Origin

Referer:发过来的请求的原始地址,很多抢购服务会用这个做限制,必须通过某个入来进来才有效

User-Agent: 服务器通过这个请求头判断用户的软件的应用类型、操作系统、软件开发商以及版本号、浏览器内核信息等; 风控系统、反作弊系统、反爬虫系统等基本会采集这类信息做参考

Cookie: 携带了登录信息,凭此可以免除账密登录,这也是重大的安全隐患,一般会设置过期时间。

Content-Type: HTTP请求提交的内容类型,一般只有post提交时才需要设置,比如文件上传,表单提交等。用来指定不同格式的请求格式响应信息俗称 MIME媒体类型,常见的取值为:
text/html:HTML格式 
text/plain:纯文本格式 
text/xml:XML格式 
image/gif:gif图片格式 
image/jpeg:jpg图片格式 
image/png:png图片格式
application/json:JSON数据格式 
application/pdf:pdf格式 
application/octet-stream:二进制流数据,一般是文件下载
application/x-www-form-urlencoded:form表单默认的提交数据的格式,会编码成key=value格式
multipart/form-data:表单中需要上传文件的文件格式类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程小猪猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值