一 第三方Cookie的工作原理
① 案例引入
案例讲解: '登陆'站点场景下,Cookie和Session是如何'结合'的
1)第2步中与'mysql'持久化数据库做'对比'
[1]、比对成功会把'已经登陆的状态'生成一个session
[2]、这个session是'有时效'的,一般几个小时或者几天,过期后就'不能'使用了
[3]、记录一个session_id,这个'session_id_value'就记录到'数据库'中
[4]、记录的'value'信息:哪个用户登陆'多长时间'是有效,以及'用户信息'等状态信息
2)第4步中通过Set-Cookie形式将'session_id'返回给浏览器,浏览器将再Storege中保存Cookie
jsessionid是'Servlet/JSP Server'中防止'客户端屏蔽cookie'而在URL中放置sessionid的统称
支持servlet标准的'web容器',例如tomcat,它在'web.xml'中定义,例如:
<session-config>
<session-timeout>10</session-timeout>
<cookie-config>
<name>MY_JSESSIONID</name>
</cookie-config>
</session-config>
说明:session将在'10分钟'后超时
如何通过原生Java代码修改JSESSIONID的生命周期?
③ 无状态的REST架构 VS 状态管理
④ 第三方Cookie
目的: 收集用户的'个人'信息
典型: 知道你'曾经'浏览了什么信息,给你'推送'
遇到: 在淘宝'浏览'茶叶商品时候,'vivio浏览器'就给我'推荐'茶叶
细节: 携带cookie跨域名'访问第三方网站'是浏览器'自动'完成的
++++++++++++++++++ "场景" ++++++++++++++++++
1) client'访问'A网站,A网站'嵌入了'B网站的资源,'B'网站返回'Set-Cookies'保存到'B网站'域下
备注: 查看'页面'的源代码,可以看到'内嵌'的资源
2) 用户后续'直接'访问'B'网站的时候,会'自动携带'B网站下的Cookie
++++++++++++++++++ "如何观察第三方网站没有携带Set-Cookies" ++++++++++++++++++
1) wireshark抓包查看
2) 看Application面板对应'域'下的Cookie,看'最终结果'
备注:受制于'chrome版本',chrome抓包面板'无法观察'到第三方网站携带Set-Cookies字段
1) domain 属性是指可以'访问该 cookie' 的域名
2) 谁发起的'请求',cookie就保存发起请求对应的'域名'下
备注:由于'B'资源嵌入到A中,所以获取B资源的时候,相当于'A'发起的请求,cookie自然保存到'A'域下
⑤ 答疑解惑
说明: 一般常用'第三方 Cookie' 结合 'Referer' 请求头来确定'来源'
说明: cookie的管理由'浏览器的内核引擎'实现