jsessionid與cookie關係的理解
本地測試地址為http://localhost/TEST/login.jsf
當瀏覽器打開cookie時,瀏覽器第一次與服務器建立連接,會創建一個session,並生成一個id即jsessionid,通過response header中的set-cookie方法傳遞給client,當server判斷request中沒有包含jsessionid的cookie時,就是通過URL改寫機制向client傳信息。

在首次瀏覽器與服務器建立連接的請求中,request中並沒有發現保存著jsessionid的cookie,所以會將jsessionid通過追加到URL的方式傳回給client,見下圖2。也就是此時的地址變為http://localhost/TEST/login.jsf;jsessionid=1FBE8ABA3F5CDF90A2C00CDB24840685。從request header中也可以看到,此時client接收到了jsessionid,並將它保存在cookie中,並在每次請求中都會攜帶。可以在後台通過request.getRequestSessionId()的方式查看請求中是否包含session id,當然也可以通過request.getSession().getId()的方式獲取每次創建會話的session id。

當瀏覽器關閉cookie時,即瀏覽器不允許讀取cookie,那麼每次登陸瀏覽器頁面或者在頁面中發起請求,都可以看到response header中存在set-cookie,且每次生成的session id都不同,這是因為瀏覽器不允許讀寫cookie,所以瀏覽器與服務器創建會話時便會重新創建session,生成新的session id。而由於每次request header中都不會包含jsessionid的cookie,所以jsessionid會通過改寫URL的方式傳給client,也就是地址會變為http://localhost/TEST/login.jsf;jsessionid=xxx。
jsessionid通過重寫url的方式傳給client這種方式傳給client其實非常不安全,有很多博客寫了,具體哪些看其他博客分析。我們將如何避免:
tomcat7可以通過在web.xml的session-config中設置tracking-mode。<tracking-mode>用于表示容器应该使用哪种技术追踪会话id,它有三個合法值可供選擇。設置URL則會將jsessionid顯示在地址欄中,不安全;設置SSL是最安全的方式,但要求所有请求都必须是HTTPS;最後設置為COOKIE,會將jsessionid儲存在cookie中,即使瀏覽器禁用了cookie,也不會將jsessionid顯示在url上

一些有用的網址
https://fralef.me/tomcat-disable-jsessionid-in-url.html
https://blog.csdn.net/weixin_30840573/article/details/96675887
https://www.jianshu.com/p/f2e5db637ed4
jsessionid與cookie關係的理解的更多相关文章
- 【转载】保哥 釐清 CLR、.NET、C#、Visual Studio、ASP.NET 各版本之間的關係
我常常不仅仅逛 博客园,还会去找国外,特别是台湾的技术部落格,发现好的文章,我便会收录,今天我转载或者全文复制,在Google 博客园,一位叫保哥, 釐清 CLR..NET.C#.Visual Stu ...
- 智课雅思词汇---十七、前綴il-, in-, ir-, im-有什麼關係
智课雅思词汇---十七.前綴il-, in-, ir-, im-有什麼關係 一.总结 一句话总结:这几个长得非常像,并且意思也非常像 1.前綴il-, in-, ir-, im-是什麼意思? 前缀:i ...
- JavaWeb中Cookie会话管理,理解Http无状态处理机制
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6512995108961387015/ 1.<Servlet简单实现开发部署过程> 2.<Serv ...
- sql: T-SQL 统计计算(父子關係,樹形,分級分類的統計)
---sql: T-SQL 统计计算(父子關係,樹形,分級分類的統計) ---2014-08-26 塗聚文(Geovin Du) CREATE PROCEDURE proc_Select_BookKi ...
- cppoop作业:Inheritance+Composition 關係下的構造和析構
Inheritance+Composition 關係下的構造和析構 哪个的ctor先被调用. 父类先于组件类调用 构造函数
- 关于tomcat7服务下面js无法获取JSESSIONID的cookie信息
http://tomcat.apache.org/tomcat-5.5-doc/config/context.html Does anyone know what changed in the con ...
- 对Cookie和Session的理解
本篇文章系自己总结经验,如果有朋友感觉哪里有问题,欢迎留言评论,谢谢~! Cookie和Session的产生背景: 在动态页面里面,每个变量都是有有效期的,所有的变量的最大生命周期就是一个脚本的周期( ...
- cookie,session,token的理解
Get POST 区别异同点 淘宝token的 理解 过程算法 防止伪造请求 伪造相对难 简单发展史 登录的操作: 哪些人往自己的购物车中放商品, 也就是说我必须把每个人区分开,这就是一个 ...
- session和cookie的最深刻理解
先说session 对SESSION的争论好象一直没有停止过,不过幺麽能理解SESSION的人应该占90以上.但还是讲讲,别嫌老~ 有一些人赞成用SESSION,有一些人不赞成.但这个问题到底要怎么说 ...
随机推荐
- Django-视图&网址
前言 Django第一篇简单的介绍了环境搭建与创建Django项目的两种方式,以及如何启动服务,在前端访问HelloWorld地址,这篇内容首先学习一下Django项目中的各个模块的用途及Django ...
- Please verify that your device’s clock is properly set, and that your signing certificate is not expired.
解决方法: 1.关闭项目,找到项目文件XXXX.xcodeproj,在文件上点击右键,选择“显示包内容”(Show Package Contents).会新打开一个Finder. 2.在新打开的Fin ...
- Numpy科学计算从放弃到入门
目录 一.什么是Numpy ndarray对象 相关文档 二.如何创建数组 三.如何访问数组 下标索引 切片索引 布尔型索引 整数索引 方形索引 四.如何做算数运算 五.如何使用统计函数 六.数组转置 ...
- laravel 事件机制 实践总结
laravel 事件机制 实践总结 观察者模式 在EventServiceProvider的linsten数组里面加上事件和监听器,键名是事件,键值里面的数组是一个或者多个监听器, protected ...
- 自学前端开发,现在手握大厂offer,我的故事还在继续
简要背景 我是一个非科班出身的程序员,而且是连续跨专业者,用一句话总结就是:16 届本科学完物流,保送研究生转交通,自学前端开发的休学创业者. 17 年休学创业,正式开始学习前端,离开创业公司后,我又 ...
- HDU-6214 Smallest Minimum Cut(最少边最小割)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6214 Problem Description Consider a network G=(V,E) w ...
- Leetcode 题目整理-7 Remove Element & Implement strStr()
27. Remove Element Given an array and a value, remove all instances of that value in place and retur ...
- SpringBoot使用JMS(activeMQ)的两种方式 队列消息、订阅/发布
刚好最近同事问我activemq的问题刚接触所以分不清,前段时间刚好项目中有用到,所以稍微整理了一下,仅用于使用 1.下载ActiveMQ 地址:http://activemq.apache.org/ ...
- Nutz框架-- Cnd条件使用原生sql
案例 今天接到一个临时的业务需求,做一个简单的过滤作为临时业务需要使用一两天,于是想到在原有的Cnd条件上加上一个Not like 进行过滤,但是发现现有Cnd条件查询好像满足不了 解决方案 使用Nu ...
- 如何使用jmeter做一个功能的性能测试
一.为什么又再次写类似的文章? 在博客园和公号写文章,已经快两年了,所以自然在公号和博客园都能联系到我的. 也就是几天前,有个人加我微信,对于总有人加我好友,我已经觉得不奇怪了,为什么呢? 加我好友的 ...