java中使用Cookie替代Session解决跨域Session失效问题

分布式系统中,各个子域名跨域访问的时候,会出现session失效问题,导致登录失败.

例如:用户在www.111cn.net 上登录成功了.但是切换到他的个性化域名 mb.111cn.net 上的时候session失效.

怎么办?

可以采用session复制方案,比如nfs session共享,membercache session存储,还有使用terracotta也可以.
采取以上方案都可以,但是上述方案会导致开发环境过于复杂,运维环境也过于复杂,而且session跨网络传输响应速度会减慢.
故我这边采用了轻量级的cookie替代session解决方案.

Cookie替代Session,解决分布式Session失效问题思路如下:

存储过程:
1.将要保存的javabean转成json字符串(用gson工具)
2.des加密json字符串
3.设置到根域名的cookie中
cookie.setDomain("kaihuangzhe.com");

解析过程:
1.遍历所有cookie
2.找到对应的cookie
3.des解密json字符串
4.还原为javabean(gson).

时间: 2024-10-16 03:16:11

java中使用Cookie替代Session解决跨域Session失效问题的相关文章

js中利用JSONP解决跨域问题

什么是跨域? 简单的来说,出于安全方面的考虑,javascript不能访问其他服务器上的内容,即"同源策略"(参考1,参考2).跨域就是通过某种手段绕过同源策略去访问不同服务器上的内容.只要域名.端口.协议任何一个不同,就是不同的域.协议或端口不同只能通过后端来解决. URL 说明 是否允许通信 http://www.a.com/a.js http://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.js http://www.a.com/

Java中浮点数精度问题的解决方法_java

问题描述 在项目中用Java做浮点数计算时,发现对于4.015*100这样的计算,结果不是预料中的401.5,而是401.49999999999994.如此长的位数,对于显示来说很不友好. 问题原因:浮点数表示 查阅相关资料,发现原因是:计算机中的浮点数并不能完全精确表示.例如,对于一个double型的38414.4来说,计算机是这样存储它的: 转成二进制:1001011000001110.0110011001100110011001100110011001100 转成科 学计数法:1.0010

window.name解决跨域数据传输问题

原文:http://research.microsoft.com/~helenw/papers/subspace.pdf window.name 传输技术,原本是 Thomas Frank 用于解决 cookie 的一些劣势(每个域名 4 x 20 Kb 的限制.数据只能是字符串.设置和获取 cookie 语法的复杂等等)而发明的(详细见原文:<Session variables without cookies>),后来 Kris Zyp 在此方法的基础上强化了 window.name 传输

javascript使用window.name解决跨域问题第1/2页_javascript技巧

window.name 传输技术,原本是 Thomas Frank 用于解决 cookie 的一些劣势(每个域名 4 x 20 Kb 的限制.数据只能是字符串.设置和获取 cookie 语法的复杂等等)而发明的(详细见原文:<Session variables without cookies>),后来 Kris Zyp 在此方法的基础上强化了 window.name 传输 ,并引入到了 Dojo (dojox.io.windowName),用来解决跨域数据传输问题.window.name 传输

js前端解决跨域问题的8种方案(最新最全)_javascript技巧

1.同源策略如下: URL 说明 是否允许通信 http://www.a.com/a.jshttp://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.jshttp://www.a.com/script/b.js 同一域名下不同文件夹 允许 http://www.a.com:8000/a.js http://www.a.com/b.js 同一域名,不同端口 不允许 http://www.a.com/a.js https://www.a.com/b.j

在liferay中用serveResource解决跨域访问问题

简介: 众所周知,跨域问题是十分常见的需求,比如让客户端的ext-js控件可以渲染来自服务器端的json对象.我们可以用很多很多方法来解决,比如jsonP.但是,在liferay中,我们可以用serveResource方法来优雅的解决跨域访问问题. 白板分析: 以下是摘自我在技术讨论会上的白板: 解决方法: 首先编写一段serveResource方法,让其和远端的json对象打交道,它作为中间层可以封装来在远程的json资源,然后提供给本域内的ext-js代码来渲染. 当然了,这里我们的资源必须

html2canvas截图如何解决跨域的问题?

问题描述 html2canvas截图如何解决跨域的问题? 1.问题描述 如果不跨域的话,截图正常. 如果有跨域的图片,那么js报错,报错信息如下: Uncaught SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported. 2.代码 /** * 截图 */ function doScreenShot(){ html2canvas(docume

AngularJs解决跨域问题案例详解(简单方法)_AngularJS

首先我们做点准备说明,不然你明白我说的是啥意思别人不明白,就算别人明白了那总有人不明白,那你要说了,我的意思是这个说明必须要做了,答案是必须的,为了更好的方便大家理解嘛. 我们以两个主域名或者一个主域名+一个二级域名为例,均可演示跨域问题. 客户端 a.com 服务端 b.com或者s.a.com angularJs版本 V1.2.25 准备工作做得很充分嘛,就差把我们的编辑器是subline暴露出来了,这个一般人我是不告诉他滴. 有人嚷嚷了,这问题老早就有了,你现在提出来有啥意义呢?难不成你还

纯前端解决跨域问题

背景 跨域是由浏览器的同源策略引起的,是指页面请求的url地址,必须与浏览器上的url地址处于同域上(即域名,端口,协议相同). 这是为了防止某域名下的接口被其他域名下的网页非法调用,是浏览器对JavaScript施加的安全限制. 这个措施的出发点是好的,但是程序页面开发的过程中,却常常给前端开发者带来麻烦. 由于前端开发过程中,静态资源是放在本地电脑上的,访问这些资源通常通过IP方式(127.0.0.1)或者localhosts来访问,与线上服务器所在域名不符,不能顺利调用服务的端口. 解决跨