精华内容
下载资源
问答
  • cookie、session、jsession 关系 在使用CAS的时候,对Cookies、session、jsession 这三者是什么不是很了解。翻阅资料和实践后终于明白这三者的概念和它们的用处。   一、http 我们知道网页的传输大部分基于http...

    cookie、session、jsession 关系

    在使用CAS的时候,对Cookies、session、jsession 这三者是什么不是很了解。翻阅资料和实践后终于明白这三者的概念和它们的用处。

     

    一、http

    我们知道网页的传输大部分基于http协议。

     

    HTTP协议的主要特点可概括如下:

    1.支持客户/服务器模式。

    2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

    3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

    4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

    5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

    因为HTTP协议是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现。在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两瓶饮料。最后结帐时,由于HTTP的无状态性,不通过额外的手段,服务器并不知道用户到底买了什么。 所以Cookie就是用来绕开HTTP的无状态性的“额外手段”之一。服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。

     

    因为cookie是存储在客户端的,客户可能会对这些信息进行修改或清除。这样会造成安全性问题。为了解决这个问题,使用session的方式保存用户的相关信息。

    二、什么是cookie 机制?

    正统的cookie分发是通过扩展HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的cookie。然而纯粹的客户端脚本如JavaScript或者VBScript也可以生成cookie。而cookie的使用是由浏览器按照一定的原则在后台自动发送给服务器的。浏览器检查所有存储的cookie,如果某个cookie所声明的作用范围大于等于将要请求的资源所在的位置,则把该cookie附在请求资源的HTTP请求头上发送给服务器。

     

     

         cookie的内容主要包括:名字,值,过期时间,路径和域。路径与域一起构成cookie的作用范围。若不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。这种生命期为浏览器会话期的cookie被称为会话cookie。会话cookie一般不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存里的cookie,不同的浏览器有不同的处理方式。 

     

    cookie截图

    三、什么是session机制?

    session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。 

      当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识------------称为session id,如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(检索不到,会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。

     

     

            保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发挥给服务器。一般这个cookie的名字都是类似于SEEESIONID。但cookie可以被人为的禁止,则必须有其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。

     

     

     

    cookie 和session 的最大特点是:

    cookie: 会话信息是保存在用户的浏览器中。

    session :会话信息是保持在服务端的。

     

    Jsessionid?

      Jsessionid只是tomcat的对sessionid的叫法,其实就是sessionid;在其它的容器也许就不叫jsessionid了。

     

    附 cookies 相关属性解释:

    Cookie

    ( object )表示一个HTTP cookie的信息。

    name ( string )cookie名称。

    value ( string )cookie值。

    domain ( string )cookie的域名。(例如 "www.google.com", "example.com").

    hostOnly ( boolean )True表示cookie是一个host-only cookie (例如,一个检索的主机必须与cookie的域名完全一致)。

    path ( string )cookie的路径。

    secure ( boolean )True表示cookie被标记为保密。(例如,它的有效范围被限制于加密频道,最典型是HTTPS).

    httpOnly ( boolean )True表示cookie被标记为HttpOnly (例如cookie在客户端的脚本无法访问)。

    session ( boolean )True表示cookie是线程cookie,与有过期时间的持久cookie相对应。

    expirationDate ( optional number )cookie的过期时间,用从UNIX epoch(00:00:00 UTC on 1 January 1970)开始计的秒数表示。会话cookie没有该属性。

    storeId ( string )包含该cookie的存储id,可通过getAllCookieStores()获取。

     

    相关链接:

    http://www.cnblogs.com/fnng/archive/2012/08/14/2637279.html

    http://open.chrome.360.cn/extension_dev/cookies.html

    展开全文
  • 在进行单点登录集成的时候,偶尔会有服务登录成功后,url后携带;jsessionid,会造成很大的问题; 这是Spring 对session跟踪机制,(cookie,URL重写,表单隐藏字段) 设置 server.session.tracking-modes=cookie ...

    在进行单点登录集成的时候,偶尔会有服务登录成功后,url后携带;jsessionid,会造成很大的问题;

    这是Spring 对session跟踪机制,(cookie,URL重写,表单隐藏字段)

    设置

    server.session.tracking-modes=cookie

    在客户端即可解决。这是springboot的玩法

    因为本身单点功能是使用的cookie机制,所以直接设置成cookie即可解决问题。

     

     

    展开全文
  • 负载均衡之JSession实践,已软件方式平衡服务器请求响应负荷
  • jsession的作用

    千次阅读 2016-08-31 13:19:39
    a=x&b=x,即jsession以;jsessionid=xxxxxxxxxx的形式出现在url中 1:session的作用 由于http协议是无状态会话协议,无法保存信息,session是为了解决用户在浏览活动中能够保存信息而诞生的。每一个session都会...

    问题:为何出现如下url:http://www.xxx.com/xxx_app;jsessionid=xxxxxxxxxx?a=x&b=x,即jsession以;jsessionid=xxxxxxxxxx的形式出现在url中


    1:session的作用

    由于http协议是无状态会话协议,无法保存信息,session是为了解决用户在浏览活动中能够保存信息而诞生的。每一个session都会有唯一标识符jsessionid,jsessionid保存在cookie中,每次客户端请求,服务器都能通过保存在cookie中的jsessionid找到对应的session。也就是说session是基于cookie的实现。 ps:储存jsession的cookie与一般的cookie变量不同,jsessionid是保存在内存cookie中的,在一般的cookie文件中是看不到它的影子的。内存cookie在打开一个浏览器窗口的时候会创建,在关闭这个浏览器窗口的时候也同时销毁。这也就解释了为什么session变量不能跨窗口使用,要跨窗口使用就需要手动把jsessionid保存到cookie里面。

    2:如果用户禁用了cookie?

    当用户禁用了cookie,服务器理所应当的无法获取jsession,也无法获取对应的session,为了解决这问题,我们将使用重写url技术,将jsessionid以;jsessionid=xxxxxxxxxx的形势附加在url上,也就诞生了问题中的情况。 当用户禁用cookie时,整个会话活动过程url都必须携带jsession参数,而我们处理url的时候不得不去解析url,在解析完毕之后再附加上jsession参数返回,显得十分麻烦。故sun提供了以下两种方法,response.encodeurl()和response.encoderedirecturl()

    ps:  另一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。

    2.1两种方法的区别

    两种方法本质上没有太大的区别。唯一需要注意的是,当使用sendredirect时,由于是产生新的请求,原来的请求会消失,故要使用

    response.encoderedirecturl()

    3:关于session

    3.1:当程序需要使用session时,会先通过jsessionid查找相应的session来使用,如果查找不到,有可能会创建出一个session来使用,如果没有jsessionid,则会新创一个session并且产生对应的jsessionid,在本次响应结束时返还给客户端并且保存在cookie中jsession是一个极其难重复和被仿造的长字符串。

    3.2:关于“只要关闭窗口,session就会消失”,服务器是无法感觉窗口是否关闭,只能通过特定时机清楚session(如在用户选择登出时,将session设置为过期)或者当session超过一定时间没有使用则使session过期的方法让消失。

    4:cookie储存在哪里

    保存jsessionid的cookie是储存在内存中的。那么什么时候是储存在内存中,什么时候是储存在硬盘中呢?

    只要设置了过期时间的cookie都是储存在硬盘中,无任何操作的cookie就是储存在内存中


    主要参考:http://sxsoft.blog.163.com/blog/static/190412229200911103116773

    展开全文
  • 在shiro.xml文件中添加配置 配置解析 1、添加 sessionManager bean <bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager"> ...propert...

    在shiro.xml文件中添加配置

    配置解析

    • 1、添加 sessionManager bean

    <bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">

                            <!-- 去掉url ;jsessionid= -->

                            <property name="sessionIdUrlRewritingEnabled" value="false" />

                            <!-- 解决no session -->

                            <property name="sessionIdCookie" ref="sessionIdCookie"/>

                            <!-- 设置 session时效 -->

                            <property name="globalSessionTimeout" value="3600000"/>

                    </bean>

     

    • 2、把新增sessionManager注入securityManager

    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">

                            <property name="realm" ref="ShiroRealm" />

                            <!—这句必须加,不然白扯 -->

                            <property name="sessionManager" ref="sessionManager"/>

                    </bean>

     

    • 3、新增 sessionIdCookie, 解决no session问题

    <bean id="sessionIdCookie" class="org.apache.shiro.web.servlet.SimpleCookie">

                            <constructor-arg value="sid"/>

                            <!--设置Cookie名字,默认为JSESSIONID-->

                            <property name="name" value="SDMSID" />

                    </bean>

     

    展开全文
  • curl携带jsession方式请求,获取cookie等

    千次阅读 2017-11-07 22:43:20
    curl携带jsession方式请求,获取cookie --正常方式 curl --insecure -H "Content-Type: application/json" -X POST -d "{'city_name': '天津'}" https://10.141.81.90:28443/li/ebus/kms/map/getcityid   --携带...
  • HTTP Request一般由3部分组成:  (1)Request Line  这一行由HTTP Method(如GET或POST)、URL、和HTTP版本号组成。  例如,GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1  ...
  • 1、同一线程下请求: 解决方法一:添加登录请求、HTTP Cookie 管理器... Set-Cookie: JSESSIONID=fb65f75b-857d-4647-a716-c9fd3fad8d6f; Path=/; HttpOnly 缺点:只能使同一线程组下请求保持登录,不可跨线程组 ...
  • 修改tomcat里面的jsession里面的名字

    千次阅读 2017-03-06 19:15:34
    Context docBase="F:\workspace\web" path="" reloadable="false" sessionCookieName="WJSESSIONID" />  修改之后cookie里面的值是
  • tomcat jsession原理

    2018-06-26 16:14:00
    2019独角兽企业重金招聘Python工程师标准>>> ...
  • tomcat7为了安全性,防止人为修改sessionid进行攻击,将cookie中JSESSION设置为httponly=true,这样无法使用cookie获取到JSESSIONID 如何获取JSESSIONID。修改tomcat目录下conf/context.xml文件。useHttpOnlu...
  • 前言 参数关联是接口测试和性能测试最为重要的一个步骤,很多接口的请求参数是动态的,并且需要从上一个接口的返回值里面取出来,一般只能用一次就失效了。最常见的案例就是网站的登录案例,很多网站的登录并不仅仅...
  • 就是带了jsession id,解决方法有两个 1) 2) 使用:${pageContext.request.contextPath} <title>Welcome! ${pageContext.request.contextPath}/resources/css/style.min.css" rel="stylesheet"> ${...
  • other 关于jsession

    千次阅读 2014-09-17 13:35:14
    jsession是什么:jsessionid是session的标识。这就好比每个人都有身份证一样。 当你与服务端进行会话时,比如说登陆成功后,服务端会为你开壁一块内存区间,用以存放你这次会话的一些内容,比如说用户名之类的。...
  • jsession 和 cookie欺骗原理

    千次阅读 2013-08-28 14:39:38
    jsession 和 cookie欺骗原理 (转) 解读session session是一种保存上下文信息的机制,它是针对每一个用户的,变量的值保存在服务器端,通过SessionID来区分不同的客户,session是以Cookie或URL重写...
  • COOKIE, SESSION, JSESSION

    2017-03-06 20:40:00
    http://www.360doc.com/content/11/1027/10/7472437_159535413.shtml 转载于:https://www.cnblogs.com/fysola/p/6511843.html
  • jsession session

    2012-02-20 17:34:50
    在一些投票之类的场合,我们往往因为公平的原则要求每人只能投一票,在一些WEB开发中也有类似的情况,这时候我们通常会使用COOKIE来实现,例如如下的代码:&lt; % cookie[]cookies = request.getCookies();...
  • jsession id

    2012-06-18 09:32:52
    jsession id产生的原因,浏览器初次访问服务器的时候,服务器不确定浏览器是否支持cookie,所以发回这个id用于维护状态。如果浏览器支持cookie,接下去的请求中就不需要这个id了。 又一说,如果访问的服务器开启...
  • JSESSION失效问题

    2012-11-16 22:17:00
    问题:在开发环境下的页面进行数据查询时,自动跳到后台 权限控制 ...JSESSION 失效,导致账号侦探页面请求被拦截没法提交。把配置改成日常下的就可以了: xuAdminHostName=xu.admin.taobao.org  。  
  • 1.jsessionid是什么? Jsessionid只是tomcat的对sessionid的叫法,其实就是sessionid;在其它的容器也许就不叫jsessionid了 2.那么有什么问题? 首先这是一个保险措施 因为Session默认是需要Cookie支持的,但有些客户...
  • 新建urlrewrite.xml文件,其内容如下: [color=blue]&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;!DOCTYPE urlrewrite PUBLIC ...-//tuckey.org//DTD UrlRewrite 4.0//EN"...
  • 跨域数据交换与跨域的jsession问题

    千次阅读 2012-05-29 13:29:45
    关于跨域问题,也只是处于研究阶段,具体的实践还相对较少,所以这里描述的问题,和解决的办法有些只是基于一种想法,具体可能并没有实践,有些可能并不正确,此文可能会进行多次的修改和完善.这里所关注的问题主要集中在两...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,511
精华内容 1,004
关键字:

jsession