zoukankan      html  css  js  c++  java
  • 关于tomcat和sessionCookieName和SESSION_PARAMETER_NAME以及disableURLRewriting参数原理和使用

    关于tomcatsessionCookieNameSESSION_PARAMETER_NAME以及disableURLRewriting参数

    关于sessioncookie参考:

    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中)来将sessionid传给服务器来维持会话(当然如果浏览器接受会话cookie优先级是从会话cookie中去,也就是url里面的session参数会被抛弃)。

    例如:get.do;jsessionid=1682268A851B4B6A3BAE18871C63AF30

     

    查看tomcat相关源码:

     

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

     

    此时的SESSION_PARAMETER_NAMEsessionCookieName是可以不相同的(默认相同),通过修改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任何浏览器任地方都能够进行访问,当然就带来了安全问题。可通过以下参数来禁止URLRewritsessionid,仍然是在tomcatcontext.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信息。

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

  • 相关阅读:
    字典相关函数(增删改查)
    列表的相关函数 (增删改查)
    【转】一个java页游服务器框架
    【转】CodeIgniter定义自己的Helper和Helper的方法
    【转】CodeIgniter配置之database
    【转】最简单的CI框架入门示例--数据库取数据
    ORACLE创建表空间、创建用户、更改用户默认表空间以及授权、查看权限(修改表空间大小)
    ORACLE创建表空间、创建用户、更改用户默认表空间以及授权、查看权限(修改表空间大小)
    学习oracle经常要光顾的几个网站整理
    学习oracle经常要光顾的几个网站整理
  • 原文地址:https://www.cnblogs.com/interdrp/p/4935546.html
Copyright © 2011-2022 走看看