关于tomcat和sessionCookieName和SESSION_PARAMETER_NAME以及disableURLRewriting参数

关于session和cookie参考:

http://www.blogjava.net/freeman1984/archive/2011/09/02/357833.html

http://www.blogjava.net/freeman1984/archive/2010/09/09/331501.html

http://www.blogjava.net/freeman1984/archive/2010/03/30/316901.html

tomcat服务端和客户端通过sessionCookieName参数(默认值:jsessionid)的值来识别session,并在此session中共享数据。在浏览器首次请求服务的时候,tomcat服务器会在响应头信息信息里面返回:

 

告诉浏览器保存cookie名为JSESSIONID的cookie,当然此时为会话cookie,此cookie是保存在浏览器当前会话中的。过期时间为当前会话结束时。(当然前提是浏览器要设置为接受第三方cookie)

在下次浏览器请求的时候会将此cookie值返回给服务器,当然cookie的名称同(sessionCookieName参数,确切的来说是同浏览器保存的会话cookie的名称),当服务器接受到此参数的时候,就不会在响应头信息信息里面返回Set-cookie

当然sessionCookieName参数的值是可以修改的,查看官方文档:

sessionCookieName

The name to be used for all session cookies created for this Context. If not set, the default of JSESSIONID will be used. Note that this default will be overridden by the org.apache.catalina.SESSION_COOKIE_NAME system property.

通过在contex中设置:
1 <Context sessionCookieName="jss" >

或者通过java虚拟机参数

2 -D org.apache.catalina.SESSION_COOKIE_NAME=jss

或者动过设置:

3

System.setProperty("org.apache.catalina.SESSION_COOKIE_NAME", "jss");

当然后两种的优先级高。

修改之后在查看服务器返回:

当浏览器设置了不接受第三方cookie的时候。Tomcat支持通过URLRewrit(将sessionid放在url中)来将session的id传给服务器来维持会话(当然如果浏览器接受会话cookie优先级是从会话cookie中去,也就是url里面的session参数会被抛弃)。

例如:get.do;jsessionid=1682268A851B4B6A3BAE18871C63AF30

查看tomcat相关源码:

private static final String match = ";" + Globals.SESSION_PARAMETER_NAME + "=";

此时的SESSION_PARAMETER_NAME和sessionCookieName是可以不相同的(默认相同),通过修改org.apache.catalina.SESSION_PARAMETER_NAME参数来修改,方式如下:

-Dorg.apache.catalina.SESSION_PARAMETER_NAME=jsss

或者:

System.setProperty("org.apache.catalina.SESSION_PARAMETER_NAME", "jsss");

这样通过URLRewrit的方式session就不限于么个浏览器或者浏览器页了。只要有此seesionid任何浏览器任地方都能够进行访问,当然就带来了安全问题。可通过以下参数来禁止URLRewrit传sessionid,仍然是在tomcat的context.xml文件内设置:

<Context disableURLRewriting="true">

官方文档:

isableURLRewriting

Set to true to disable support for using URL rewriting to track session IDs for clients of this Context. URL rewriting is an optional component of the servlet 2.5 specification but disabling URL rewriting will result in non-compliant behaviour since the specification requires that there must be a way to retain sessions if the client doesn't allow session cookies. If not specified, the specification compliant default value of false will be used.

设置完成后即使你在url里面加了sessionid的值,服务器仍然会在返回头信息里面返回Set-cookie信息。

其他应用服务器原理大致相同。

关于tomcat和sessionCookieName和SESSION_PARAMETER_NAME以及disableURLRewriting参数原理和使用...相关推荐

  1. 【Tomcat】解决GET方式传递的参数(URL中的参数)乱码问题

    在Tomcat中(其它的webserver中也一样),参数可以通过GET和POST方式传递.通过GET和POST方式传递的参数,遇到乱码时的解决办法也不一样. 在Tomcat中遇到GET方式传递的参数 ...

  2. 从tomcat说起全面理解Java web开发原理

    从tomcat说起全面理解Java web开发原理 简介:Java开发分为Java ME,Java SE,Java EE.回顾过去这些的开发工作基本上都是围绕着Java EE的,在开发经历中分别经历了 ...

  3. tomcat的acceptCount、maxThreads、connectionTimeout参数调整

    https://segmentfault.com/a/1190000008064564 acceptCount值调整(默认100) acceptCount的经验值的范围为50-300,当tomcat的 ...

  4. Tomcat性能调优及JVM内存工作原理

    Java性能优化方向:代码运算性能.内存回收.应用配置. 注:影响Java程序主要原因是垃圾回收,下面会重点介绍这方面 代码层优化:避免过多循环嵌套.调用和复杂逻辑. Tomcat调优主要内容如下: ...

  5. Tomcat 调优及 JVM 参数优化

    Tomcat 本身与 JVM 优化 Tomcat:调整Server.xml JVM:bat启动服务方式的话修改catalina.bat 服务式启动的话参考:http://www.cnblogs.com ...

  6. 简单读!tomcat源码(一)启动与监听

    tomcat 作为知名的web容器,很棒! 本文简单了从其应用命令开始拆解,让我们对他有清晰的了解,揭开神秘的面纱!(冗长的代码流水线,给你一目了然) 话分两头: 1. tomcat是如何启动的? 2 ...

  7. Tomcat参数配置

    2019独角兽企业重金招聘Python工程师标准>>> 1. JAVA_OPTS内存优化 Tomcat内存优化主要是对启动参数的优化,可以在Tomcat的启动脚本catalina.s ...

  8. linux eclipse web插件,使用Tomcat插件开发WEB应用

    在Eclipse中,可以安装Tomcat插件,实现WEB应用的开发调试工作,Tomcat插件还可以支持WEB应用的热部署. 一.安装配置Tomcat插件 可以通过拷贝安装和Links方式安装Tomca ...

  9. Tomcat发布Maven项目遇到异常:java.lang.OutOfMemoryError: PermGen space

    前言: 本问题出现在tomcat 7发布 web3.0Maven项目的时候出现. 问题阐述: 异常:java.lang.OutOfMemoryError:PermGen space 解决如下: 1.  ...

最新文章

  1. 如何设计一个复杂的业务系统?从对领域设计、云原生、微服务、中台的理解开始...
  2. 《JUnit实战(第2版)》—第2章2.4节用Suite来组合测试
  3. 第三十六讲 ASP.NET中的Web服务(三)
  4. AD域中删除OU,提示没权限。 解决办法。
  5. 汇编:键盘中断(int 9)
  6. MySQL数据库https接口_第三章 mysql 数据库接口程序以及SQL语句操作
  7. 索引超出矩阵维度_搜索引擎技术之倒排索引原理详解,及案例分析
  8. 装饰一个类及内部方法
  9. html提现页面模板,提现记录.html
  10. asp连接oracle6,asp下用OracleInProcServer完成对Oracle的连接和操作-ASP教程,数据库相关...
  11. 挖槽!堪称神级的Java技术手册火了???(文末送书活动)
  12. 《跟唐老师学习云网络》 - ip命令
  13. Cookie、Session、Token、JWT分别是什么(一)
  14. 数据库工作笔记001---mysql 修改字符集_修改排序规则
  15. 对比学习(Contrastive Learning)在CV与NLP领域中的研究进展
  16. 阿里编码规范认证考试题库(免费版)
  17. TensorRT学习(1):通过pth生成wts文件
  18. android 实现果冻动画效果,手把手教你绘制Android粘性果冻动画组件
  19. 举报两年论文终撤稿!123页PDF实名举报985大学导师学术造假后续来了...
  20. 大榕树BASIS QQ群

热门文章

  1. input输入框修改后自动跳到最后一个字符
  2. Linux下安装配置MySQL
  3. 邮件服务器“单点登录”功能
  4. php中json_decode返回数组或对象的实例
  5. uva10891Game of sum
  6. 细数开源历史上的九个重大事件
  7. XML 命名空间以及它们如何影响 XPath 和 XSLT (Extreme XML)
  8. STM32使用IIC总线通讯协议在OLED屏幕上显示字符串、汉字、单总线获取DHT11模块温湿度并通过IIC显示到屏幕(软件IIC)
  9. java定时器_拾遗Timer定时器
  10. db设计专用excel_工程师必备:硬件EMC设计规范