1,问题描述:
用户登录之后,页面一直刷新,页面呈现空白,jessionId一直在变
http://dev.cbs.abc.com/base/;JSESSIONID=07fa59d4-822e-43a7-ad7f-f0f5f5d2c347
后端显示错误
[2019-03-11 19:16:59,411] INFO com.wiwj.abc.common.shiro.ShiroSession[32] - 调用ShiroSession方法 [2019-03-11 19:16:59,411] INFO com.wiwj.abc.common.shiro.ShiroSession[51] - 调用setId方法 [2019-03-11 19:16:59,411] INFO com.wiwj.abc.common.shiro.ShiroSession[72] - 调用setTimeout方法 [2019-03-11 19:16:59,412] INFO com.wiwj.abc.common.shiro.ShiroSession[93] - 调用setAttribute方法 [2019-03-11 19:16:59,413] INFO com.wiwj.abc.common.shiro.ShiroSession[86] - 调用setAttributes方法 [2019-03-11 19:16:59,415] INFO com.wiwj.abc.common.shiro.ShiroSession[93] - 调用setAttribute方法 [2019-03-11 19:16:59,418] INFO com.wiwj.abc.common.shiro.ShiroSession[93] - 调用setAttribute方法 [2019-03-11 19:16:59,421] INFO com.wiwj.abc.common.shiro.ShiroSession[93] - 调用setAttribute方法 [2019-03-11 19:16:59,423] INFO com.wiwj.abc.common.shiro.ShiroSession[93] - 调用setAttribute方法 [2019-03-11 19:16:59,426] INFO com.wiwj.abc.common.shiro.ShiroSession[93] - 调用setAttribute方法 [2019-03-11 19:16:59,431] INFO com.wiwj.abc.common.shiro.ShiroSession[93] - 调用setAttribute方法 [2019-03-11 19:16:59,434] INFO com.wiwj.abc.common.shiro.ShiroSession[93] - 调用setAttribute方法 [2019-03-11 19:16:59,456] INFO com.wiwj.abc.common.shiro.ShiroSession[32] - 调用ShiroSession方法 [2019-03-11 19:16:59,456] INFO com.wiwj.abc.common.shiro.ShiroSession[51] - 调用setId方法 [2019-03-11 19:16:59,457] INFO com.wiwj.abc.common.shiro.ShiroSession[72] - 调用setTimeout方法 [2019-03-11 19:16:59,458] INFO com.wiwj.abc.common.shiro.ShiroSession[93] - 调用setAttribute方法 [2019-03-11 19:16:59,458] INFO com.wiwj.abc.common.shiro.ShiroSession[86] - 调用setAttributes方法
2,问题分析,系统框架采用spring+shiro方式,其中shiro配置中jsessionid配置如下
<property name="sessionIdCookie"> <bean class="org.apache.shiro.web.servlet.SimpleCookie"> <constructor-arg value="sid" /> <property name="domain" value=".cbs.abc.com" /> <property name="path" value="/" /> <property name="maxAge" value="-1" /> <property name="httpOnly" value="true" /> </bean> </property>
而对应的注释为
sessionIdCookie是sessionManager创建会话Cookie的模板: sessionIdCookie.name:设置Cookie 名字,默认为JSESSIONID; sessionIdCookie.domain:设置Cookie的域名,默认空,即当前访问的域名; sessionIdCookie.path:设置Cookie 的路径,默认空,即存储在域名根下; sessionIdCookie.maxAge:设置Cookie 的过期时间,秒为单位,默认-1 表示关闭浏览器时 过期Cookie; sessionIdCookie.httpOnly:如果设置为true,则客户端不会暴露给客户端脚本代码,使用 HttpOnly cookie有助于减少某些类型的跨站点脚本攻击;此特性需要实现了Servlet 2.5 MR6 及以上版本的规范的Servlet容器支持; sessionManager.sessionIdCookieEnabled:是否启用/禁用Session Id Cookie,默认是启用的; 如果禁用后将不会设置Session Id Cookie,即默认使用了Servlet容器的JSESSIONID,且通 过URL重写(URL中的“;JSESSIONID=id”部分)保存Session Id。
看到JsessionId一直在刷新,而这个配置主要是为了设置浏览器的cookies值,由此猜测jsessionId一直刷新的原因是cookies值一直设置不了
另外通过浏览器开发者模式中观察到application-->Storage -->Cookies中的sid存在两个,一个域名为.cbs.xx.com,一个域名为.xx.com
我大胆的把第二个域名.xx.com的这个sid给去掉,然后刷新页面就可以了
3,根源分析
是由于domain域名设置重复的问题,由于之前设置过.abc.com这个域名的sid,再使用.cbs.abc.com这个域名访问时就出现sid设置失败的情况,这个可能跟chrome浏览器设置cookies的机制有关,
其实如果domain都改成.abc.com这种其实也是不行的
建议方案:1,domain这个值都设置成.cbs.abc.com这种访问
2,各个环境设置不同的domain,比如dev.cbs.abc.com,sit.cbs.abc.com;
另外参考往上的cookies的设置规则,以供学习
1)二级域名能读取设置了domain为顶级域名或者自身的cookie,不能读取其他二级域名domain的cookie。所以要想cookie在多个二级域名中共享,需要设置domain为顶级域名,这样就可以在所有二级域名里面或者到这个cookie的值了。
2)顶级域名只能获取到domain设置为顶级域名的cookie,其他domain设置为二级域名的无法获取。
相关推荐
1. **手动设置Cookie**:在模拟登录过程中,通常需要复制服务器返回的登录成功后的Cookie,然后设置到本地浏览器,使浏览器“认为”已登录。 2. **登录验证**:服务器通过检查请求中的Cookie来验证用户是否已登录,...
【标题】:Cookies的实现 在Web开发中,Cookies是一种常用的技术,用于在客户端存储少量信息,以便在用户下次访问同一网站时能够识别并恢复他们的状态。本篇将深入探讨如何使用Visual Studio 2005和ASP.NET,结合...
4. 显示Cookies:成功获取后,工具会显示抓取到的Cookies信息,通常包括Cookie名称、值、过期时间等关键数据。 5. 存储和使用:用户可以选择保存Cookies数据,以便后续在其他应用或测试中使用。 对于软件教程.txt,...
Cookies的主要目的是为了提升用户体验,例如记住用户的登录状态,个性化推荐内容,或者分析用户行为以优化网站设计。 当用户再次访问同一网站时,浏览器会自动发送之前保存的Cookies给服务器,这样服务器就能识别...
1. **Windows API调用**:易语言本身的功能有限,对于操作系统级别的操作,如管理网络设置或清理Cookies,通常需要通过调用Windows API函数来完成。这里提到的`InternetSetOption`就是一个Windows API函数,用于设置...
- **原因分析**:`HttpURLConnection`的每次请求都是独立的,它不会自动保留之前的会话信息,因此即使之前成功登录过,再次请求`content.php`时,服务器仍然认为是一个新的会话,因此返回未登录状态。 - **解决...
4. **安全分析**:该工具可能具有检查不安全或可疑cookies的功能,帮助用户识别可能威胁到他们隐私的cookies。 5. **权限管理**:iecv或许提供了一个界面,让用户可以管理哪些网站可以设置cookies,以及对这些...
.NET框架中的Cookies应用是Web开发中的重要组成部分,它主要用于在客户端存储信息,以便在用户浏览网站的不同页面或在后续访问时能识别...通过学习和分析这个项目,我们可以提升对.NET Web开发和Cookies机制的理解。
如果未设置Expires属性,那么Cookie将在浏览器关闭后失效。设置此属性可以使Cookie永久存储在用户的设备上。 - **其他常用属性** - **Path**:定义了Cookie适用的路径,即哪些URL可以访问到该Cookie。 - **Domain*...
在某些场景下,开发者或测试人员可能需要模拟用户登录状态进行接口测试或者数据分析。这种工具可以帮助他们快速获取到必要的登录凭证,从而省去手动登录的过程。然而,值得注意的是,此类工具的使用应当遵循合法和...
- **Cookies的设置与读取**:认证成功后,认证服务器会在客户端设置一个包含认证信息的Cookie。之后,每当用户尝试访问受保护的资源时,认证代理都会读取这个Cookie,以验证用户的身份。 - **URL重定向**:当用户...
通过阅读和分析这个实例,开发者可以更好地理解如何在Delphi中使用`TIdHTTP`控件处理网络请求,特别是涉及到Cookies的场景。 总的来说,理解和掌握`TIdHTTP`控件操作Cookies的方法对于Delphi的Web应用开发者来说是...
本文将详细介绍Django项目开发中关于cookies和session的常用操作技巧,并结合具体实例进行分析。 首先,要了解在Django中如何进行cookies的操作。Cookies是存储在客户端的小型文本文件,它们保存用户的偏好设置、...
3. **客户端发送ACK报文确认**:客户端收到服务器的SYN+ACK报文后,发送一个ACK标志位设置为1的TCP报文段作为确认,至此连接建立成功。 在正常的三次握手过程中,客户端和服务器各有一个半打开连接状态,即SYN_SENT...
### Nginx 日志记录 POST 请求的内容和 Cookies ...对于开发者来说,掌握如何利用 Nginx 来记录用户...同时,根据实际情况调整 Nginx 的配置参数,如 memory buffer 的大小,也是优化性能和确保数据完整性的关键步骤。
对于不登录情况下查看搜索结果,这需要在解析网页时获取到未登录状态下的数据源。而登录后的功能,如示范下载信息,通常需要模拟登录过程。这涉及到解析登录页面的表单数据,使用requests库的post方法提交用户名和...
在这种情况下,Chatous(App B)非法获取了Facebook(App A,官方应用)的cookies,构成了XPM。 为了量化现实世界中这种跨主体操纵的普遍存在,研究者采用了一系列方法。他们结合程序静态分析、自然语言处理以及...
`matplotlib`和`seaborn`库可用于绘制图表,如条形图显示各车次的售票情况,折线图展示车票起售时间与购票成功率的关系。通过图形,用户能更清晰地理解火车票销售的规律。 再者,**时间处理**在查询车票起售时间时...
在本项目"淘宝文胸商品评论内容爬取与简单分析"中,我们将深入探讨如何使用Python进行Web爬虫技术来获取淘宝网站上特定商品(文胸)的用户评论,并进行初步的数据分析。该项目主要涉及以下几个核心知识点: 1. **...
根据给定的信息,我们可以推断出这是一段与网页抓取和分析相关的代码,主要涉及的是一个用于抓取和分析网页内容的类。下面将基于这段描述和代码片段,总结和扩展相关的知识点。 ### 抓取和分析网页的类 #### 1. 类...