HTTP请求
认识请求"报头"
header的整体的格式也是"键值对"的结构.
每个键值对占一行,键和值之间使用分号进行分割.
Host
表示服务器主机的地址和端口.(Host和URL中的ip地址端口啥的,绝大部分情况下都是一样的,少数情况可能不同).
Content-Length
表示body中的数据长度.(如果数据包没有body,则没有该字段).
Content - Type
表示请求的body中的数据格式,body是可以传输很多格式的,包括程序员自己约定的格式.(同上,数据包没有body,则没有该字段),以下是比较常见的选项.
(1)application/json:数据为json格式(body就是json),body格式形如
(2)application/x-www-form-urlencoded:form表单提交的数据格式, 是通过HTML中的form标签构造出来的一种格式.这个格式的特点,认为是把query string放到body里了.(这个也可以上传文件).body格式形如:
(3)multipart/form-data:form表单提交的数据格式(在form标签中加上
enctyped="multipart/from-data",通常用于提交图片/文件.body格式形如:
User-Agent(简称UA)
表示浏览器/操作系统的属性. 形如:
其中Windows NT 10.0; Win64; x64 表示操作系统信息.
AppleWebKit/537.36 (KHTML, like Gecko)Chrome/91.0.4472.77Safari/537.36表示浏览器信息.
Referer
表示这个页面是从哪个页面跳转过来的.形如:
如果直接在浏览器中输入URL,或者直接通过收藏夹访问页面时是没有Referer.
Cookie
这是非常重要的报头属性. 本质:浏览器这边本地化存储数据(存储在硬盘里)的机制.
Cookie中存储了一个字符串,这个数据可能是客户端(网页)自行通过JS写入的,也可能来自于服务器(服务器在HTTP响应的header中通过Set-Cookie字段给浏览器返回数据). HTTP请求中的Cookie字段,就是把本地存的Cookie信息发到服务器,HTTP响应中会有一个Set-Cookie字段,就是服务器告诉浏览器你要在本地存哪些信息.
往往可以通过这个字段实现身份标识的功能.
每个不同的域名下都可以有不同的Cookie,不同网站中的Cookie并不冲突.
可以通过抓包观察页面登陆的过程(以码云为例):
在码云的页面上,点击URL左侧的图标,选择Cookie.
然后移除已经存在的Cookie:
2)登录操作
登录请求:
登录响应
可以看到,响应中包含了3个Set-Cookie属性.
3)登录成功后,此时就可以看到后续访问码云的其它页面(比如个人主页),请求中就会带着刚才获取到的Cookie信息.
理解登录过程
关于Cookie的几个重要结论.