cookie和session
我们对cookie的了解往往停留于浏览器的层面,但cookie其实是http协议的一部分,不管服务器端还是浏览器端都需要遵循它。cookie是由服务器第一次应答请求时生成,然后通知浏览器进行缓存,下一次提交时会把当前所有的cookie都提给浏览器,需要注意cookie并不只一个。
在浏览器端以 key=value;key=value的字符串形式存在,分号隔开的两边各位一个cookie。
cookie在浏览器端是以域名+path保存的,同域名里父path的cookie可以给子path共享。例如:
a) A.xxx.com cookie: domain=A.xxx.com;path="/"
b) B.xxx.com cookie: domain=B.xxx.com;path="/"
c) A.xxx.com/test/cc cookie:
domain=A.xxx.com;path="/test/cc"
d) A.xxx.com/test/bb cookie:
domain=A.xxx.com;path="/test/bb"
e) A.xxx.com/test
c和d都能共享a的cookie,同样的c和d也能共享e的cookie,c和d以及b和其他cookie之间则无法共享。
cookie共享会导致一个页面存在多个path的情况,这时候浏览器不会做处理,提交到后台时由web服务器的策略做处理,一般而言会默认从最底级的路径往上,取最近的一个。
在tomcat中我们只要在context.xml的 context 标签里加上sessionCookiePath="/"就能做到cookie跨域了。这里所谓的跨域是指a.xxx.com/b和a.xxx.com/c之间cookie共享,这是因为设置这个参数后tomcat是生成cookie时会把cookie的path设成根目录,这样就能全局共享了。
我们知道session是默认会存在cookie里,其实也就是生成一个JESSIONID的cookie由浏览器缓存起来。这时候我们回过头来再想想我们所认知的session会话周期,我们被教导,浏览器页面关闭,这样session会话就丢失了。这到底对不对?
其实这是值得商榷的,如果cookie是会话级的活着禁用的,那么这是成立的。但如果cookie是会被缓存的,那就不能成立,因为下一次再打开时浏览器会检测到缓存的jsessionid cookie,并把它发给服务器,如果这时候这个jsessionid对应的session并没有被invalidate,那就还会被取出来。
所以我们通常的session失效其实是指cookie丢失,cookie丢了,所以jsessionid丢了,导致服务器端只能重新建立session。
我们可以尝试通过缓存把session持久化下来,然后把cookie的失效周期设成永久有效,这样就会看到即使服务器停掉了再开还是会得到相同的session。
Cookie与Session详解 7、Cookie、Session 7.1、会话 会话:用户打开一个浏览器,点击了很多超链接,访问多个web资源,关闭浏览器,这个过程可以称之为会话 有状态会话:一个同学来过教室,下次再来教室,我们会知道这个同学,曾经来过,称之为有状态会话; 你能怎么证明你是西开的学生? 你 西开 发票 西开给你发票
你真的了解 Cookie 和 Session 吗 我在做面试官的时候,曾经问过很多朋友这个问题: Cookie 和 Session 有什么区别呢?大部分的面试者应该都可以说上一两句,比如:什么是 Cookie?什么是 Session?两者的区别等。但如果再往深入探讨的话,就慢慢有一些朋友不太了解了,谈起原理时就很少有朋友全部回答准确。今天和大家一起深入聊聊有关 Cookie 和 Session 的话题 。
相关文章
- cookie & session
- web开发中的Cookie与Session技术
- 理解Cookie和Session的区别及使用
- session cookie
- Cookie/Session编码
- Cookie&Session(转)
- django框架进阶-cookie和session-长期维护
- Nikto是一款Web安全扫描工具,可以扫描指定主机的web类型,主机名,特定目录,cookie,特定CGI漏洞,XSS漏洞,SQL注入漏洞等,非常强大滴说。。。
- spring boot:用cookie保存i18n信息避免每次请求时传递参数(spring boot 2.3.3)
- curl模拟访问已经存在的cookie
- 实现cookie跨域
- 【Servlet笔记02】Servlet乱码问题,请求转发和重定向,Cookie和Session会话技术的介绍及使用
- 【项目实战】Cookie与Session傻傻分不清楚
- scrapy获取headers的set-cookie的坑
- JavaWeb系列之八(Cookie&Session)
- 深入理解cookie与session
- JSP Cookie 处理
- 网络知识===cookie 、session、JSESSIONID的区别
- [英语单词] cookie from chatGPT
- JavaWeb — session+Cookie