Web学习笔记2
Web会话机制
1、查看Http的请求头和响应头
打开浏览器,输入B站网址,按F12打开浏览器开发者模式,找到post请求:
基本信息包括:
scheme:表示协议类型
Host:表示请求的主机地址
地址:表示请求主机的IP地址和端口号,上图端口号为443
状态:表示请求主机的状态码,上图为200,表示成功处理
版本:协议版本号
referer策略:表示过滤referer报头的规则
请求头信息包括:
请求头包括:
Accept:表示支持的文件类型,若Accept为*/*,则代表浏览器支持各种文件
Accept-encoding:表示浏览器支持的压缩格式
Accept-language:表示浏览器支持的语言,zn-cn;Zh;q=0.8代表支持中文
cookie:表示cookie参数
connection:表示连接状态,“keep-alive”表示浏览器与服务器保持连接
refer:表示消息主体大小
user-Agent:表示客户端浏览器和操作系统相关信息
响应头包括:
access-control-allow-credentials:表示是否可以将请求的响应暴露给页面,返回true表示可以,佛则为不可以
access-control-allow-origin:表示指定该资源是否允许给定的oringin共享
content-encoding:对当前实体消息应用的编码类型
content-type:表示资源的多用途互联网邮件拓展类型
date:表示当前格林尼治时间
server:表示请求的源服务器用到的软件相关信息
2、Cookie
Cookie和Session都是用于维护客户端和服务器会话的技术,Cookie存储在客户端,Session存储在服务端。Cookie是浏览器保存的所有访问Web应用的相关信息的小型文本文件,由服务器以响应头的形式发送给客户端,客户端自动保存,之后每次客户端向服务器发送请求时都会携带Cookie,这样服务器可以根据Cookie识别不同的用户
一个Cookie只能表示一种信息,其各个属性包括(一个cookie至少有<Name><Value>两个信息):
<Name><Value>[path][Domain][Expires/Max-time][Secure][Httponly]
Name:Cookie名称,不区分大小写
Value:Cookie对应的值
Path:可以访问该cookie的页面路径,浏览器根据path向指定域中匹配的路径发送cookie
Domain:可以访问该cookie的域名,域名可以选择包含或不包含子域
Expires/Max-time:失效时间,浏览器停止向服务器发送cookie的时间,若不设置,浏览器关闭后cookie自动失效
Secure:安全设置,设置cookie是否只能通过https协议传输
Httponly:若为true则只能在http的请求头里包含cookie,不能通过documents.cookie来访问
cookie的工作原理为:
(1)创建cookie:当用户第一次访问一个网站时,网站服务器会为用户产生唯一识别码,并创建一个cookie对象,并在响应头里的set-cookie设置为这个对象,创建的cookie默认在浏览器缓存中,若设置了Expires/Max-time则会存放在浏览器对应的磁盘上
(2)存储cookie:浏览器在接收到响应头时,会根据set-cookie的参数生成cookie,并保存在客户端,下次再连接这个网站则在请求头中一并发送
(3)发送cookie:若用户再次访问该网站,浏览器会在存储中寻找有无对应的cookie,若有则包含在请求头中一并发出
(4)读取cookie:服务器接受到请求后读取响应头里的cookie,cookie中保存着识别用户的相关信息(例如有些网站在登录过一遍时第二次无需登录是因为cookie中有用户的账号密码)
3、Session
Session就是保存在服务器上的用户信息形式,Session机制就是当服务器接收到Cookie时,通过Session检查有无对应的用户信息,Session的工作原理为:
(1)创建Session:用户第一次向服务器传输请求时,服务器生成session对象,该对象有唯一的session_id,并开辟内存块,session_id通过响应头发送给客户
(2)存储Session:客户收到session_id后会将其存储在cookie中,并在下次请求时将这个id带在cookie中发送给服务器
(3)发送Session
(4)读取Session:当服务器接收到这个id时,会判断session中是否存在这个id,若有,则找到与这个id对应的文件;若无,则创建一个新的session_id。session_id若超时或被关闭,服务器则销毁这个session并释放内存块