Session
1 .客户端请求服务端,服务端会为这次请求开辟一块内存空间,这个对象就是session对象,存储结构为ConcurrentHashMap
2 .Session弥补了HTTP无状态特性,服务器可以利用Session存储客户端在同一个会话期间的一些操作记录
3 .
缺点
1 .A服务器存储了Session,做了负载均衡之后,一段时间之后A访问激增,会转发到B进行访问,但是B服务器没有存储A的Session,会导致Session失效
Cookie
1 .HTTP协议中的Cookie包括web Cookie和浏览器Cookie,服务端发送到浏览器的Cookie,浏览器会进行存储,并与下一个请求一起发送到服务器.用来判断两个请求是否来自同一个浏览器,比如用户保持登录状态
2 .创建Cookie
1 .接收到客户端发出的HTTP请求时,服务器可以发送带有响应的Set-cookie标头.Cookie通常由浏览器存储,然后将Cookie与http表头一同向服务器发出请求
3 .set-Cookie和Cookie标头,set-cookie会告诉客户端存储Cookie
image.png
4 .收到这个协议之后,接下来客户端的每次请求都会将存储的Cookie发送回服务器
会话Cookie和永久性Cookie
1 .会话Cookie会在客户端关闭时删除Cookie,这是因为没有执行Expires或者Max-Age
2 .永久性Cookie:在特定日期或者时间长度后关闭 Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT
Secure1
1 .安全的Cookie需要经过HTTPS协议加密的方式传递到服务器.
2 .httpOnly
1 .会话Cookie缺少HttpOnly属性会导致攻击者可以通过程序获取到用户的Cookie信息,造成用户Cookie信息泄露,增加攻击者的跨站脚本攻击威胁
2 .HttpOnly规定Cookie是否可以通过客户端脚本访问
3 .如果cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,窃取cookie内容,这样就增加了cookie的安全性
Cookie的作用域
1 .Domain和Path标识定义了Cookie的作用域,就是Cookie应该发送给那些URL
2 .Domain标识了指定哪些主机可以接受Cookie.如果不指定,默认为当前主机,这时不包括子域名.如果执行了Domain,则一般包括子域名
3 .如果Path=/docs,则一下地址都会被匹配
1 ./docs
2 ./docs/web
3 ./docs/web/http
网友评论