项目之间Cookie的共享
对于某些大型项目的开发,可能会将一个项目拆分成若干个子项目进行开发,但是项目之间的某些页面之间通过某些入口是可以相互跳转的,因此,对于有些会话的状态也是需要共享的,例如国际化,子系统A在切换语言环境后跳转到子系统B,用户第一次进入B系统页面时的语言环境应该是和跳转前A系统是一致的,一般开发过程中,会将语言信息存储到Cookie或者Session乃至可以是第三方缓存中,例如Redis,今天就先谈一下,如何实现项目之间的Cookie共享。
例如有两个项目,都会执行这一ajax,这一接口的作用是将数据传到服务端,对传入数据对应的JavaBean进行基于JSR303的注解校验,并将结果返回给客户端,返回的信息是何种语言是根据cookie中存储的语言决定的。
$.ajax({url: "http://localhost:8888/ssm/interfaces/test/m006",type: "POST",async: false,dataType: "json",contentType: "application/json",cache: false,data: JSON.stringify({"id": "bgdsdgs","name": "name", "email": "429661318@qq.com","voModel2": [{"id": "429661318@qq.com","v3": {"id":"sdfghjkl"}}]}),success: function(data) {console.log(data.errorDetail);$("#aa").html(JSON.stringify(data));},error: function() {}})
给出一个设置cookie的js方法,为了说明原理,不用jquery-cookie等第三方库
function setCookie(c_name, value, expiredays){var exdate=new Date();exdate.setDate(exdate.getDate() + expiredays);document.cookie=c_name+ "=" + escape(value) + ((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}
1、先在第一个工程下的页面下的控制台执行setCookie(“lang”,”en_US”),添加名为lang,值为en_US的cookie
这时多出了一条cookie
此时刷新页面,得到的信息就是英文信息
2、这时在第二个页面直接访问相同的接口,但是出现的依然是中文信息。
虽然访问的是同一个接口,而且都是根据当前的cookie值来确定语言的,并且cookie的值是一样的,为什么一边是中文二另一边却是英文呢。
根据上面的图可以看出,cookie除了name,value,expire等信息以外,还有domain和path属性,domain就是当前域,默认为请求的地址,如网址为www.jb51.net/test/test.aspx,那么domain默认为www.jb51.net,path默认就是当前项目的根目录,path和domain只要有一个不同,那就表示跨域,无法实现共享,而不同项目之间domain可能相同,而path一定是不同的。
因此在设定cookie的时候可以domain和path也一起设置,为了实现共享,两个项目应该设置成一样的。修改上面设置cookie的方法,具体设置什么要视情况而定
function setCookie(c_name, value, expiredays){var exdate=new Date();exdate.setDate(exdate.getDate() + expiredays);document.cookie=c_name+ "=" + escape(value) + ((expiredays==null) ? "" : ";expires="+exdate.toGMTString())+";path=/"+";domain=localhost";
}
至此实现了cookie的共享,现在一个项目改变cookie中的语言环境信息,另一个项目也会跟着一起变了。
ps:
1、对于cookie,名称一样的情况下,如果path,domain不同,两条cookie依然可以共存,而取的cookie默认是范围最小的那个,即当前path和domain下的,所以无论如何也不会是其他domain和path下面的cookie。
2、java中设置cookie的方法
Cookie cookie = new Cookie("lang", "zh_CN");// 设置domaincookie.setDomain("localhost");// 设置pathcookie.setPath("/");// 设置以后无法再前端document中看到该cookie,提高了安全性cookie.setHttpOnly(true);// 过期时间,秒为单位,// 小于0表示保存在内存中,关闭浏览器cookie就消失,// 等于0表示立即删除该cookie// 大于0保存在硬盘上cookie.setMaxAge(1);// 创建的 cookie 只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证cookie.setSecure(false);
项目之间Cookie的共享相关推荐
- shiro框架---关于多项目之间验证为什么需要共享session
关于多项目之间登录验证为什么需要共享session 服务器上部署了两个项目,登录之后才可以访问其中的接口.现在想要实现,当登录项目1成功后,可以不需要再登录项目2,直接可以访问项目2中的接口. 大部分 ...
- 不同项目之间的控件共享
不同项目之间的控件共享 上篇blog我有提到,不知如何解决不用项目之间的控件共享问题.很多朋友给予了热心的回答,这里一起表示感谢. 总结大家的回复,一般有2种观点,一是做成用户控件,二是 ...
- 在多个的共享ndk项目之间共享模块
通过静态和共享的类库,共同的模块可以在模块间共享.然而,警告是所有这些模块式同样NDK项目的一部分.NDK运行共享和重复使用模块在NDK项目之间. 1.把这共享的如avilib的源代码移动到NDK项目 ...
- 从微软一站式代码库中学到的--跨域之间的session共享
据说下面的这段代码这件可以实现不同域之间的session共享: namespace CSASPNETShareSessionBetweenSubDomainsModule { /// < ...
- java两个web项目之间如何传值,两个项目之间传递参数有关问题 - 大神进
两个项目之间传递参数问题 --- 大神进 情况 1.两个ssh项目 oms 与 GiftERP 2.调用的是GiftERP的一个Goods表,需要将表数据返回给oms项目 3.首先我oms的页面有一 ...
- 设置弹性框项目之间距离的更好方法
本文翻译自:Better way to set distance between flexbox items To set the minimal distance between flexbox i ...
- maven引用公共包_使用github作为maven仓库存放发布自己的jar包依赖 实现多个项目公共部分代码的集中,避免团队中多个项目之间代码的复制粘贴...
使用github作为maven仓库存放发布自己的jar包依赖 实现多个项目公共部分代码的集中,避免团队中多个项目之间代码的复制粘贴. 1.首先在本地maven位置的配置文件setting.xml(没有 ...
- 【博客项目】—cookie和session(七)
[博客项目]-cookie和session(七)
- java 多个项目间事物_Java-web-多个独立项目之间相互调用实践
本篇文章只涉及到应用层面,没有涉及到什么底层原理之类的,我目前的实力还没有达到那个级别.如果是大神级别的人看到这篇文章,请跳过. 项目框架也已经是搭建好了的,springboot版本为1.5,数据库操 ...
- Virtualbox主机和虚拟机之间文件夹共享及双向拷贝
参考:Virtualbox主机和虚拟机之间文件夹共享及双向拷贝 - 程序员大本营 1.设置--->常规--->双向 2.设备--->安装增强功能 安装完增强功能,注意要重启虚拟机,双 ...
最新文章
- Maven中jar版本冲突问题的解决
- C 语言编程 — GDB 调试工具
- 《趣学Python编程》——2.3 使用变量
- SpringFramework的简介
- (四)maven之查找jar包坐标,选择jar包版本
- android activity切换动画
- java断言assert
- MongoDB常用语句
- mybatis报错Type interface xxx.Dao is not...
- IDEA快速修改类名和文件名
- 【转】程序在内存中的分布
- React学习初探(环境搭建)
- Linux Ubuntu 安装 Matlab
- 2.4. myisamchk — MyISAM Table-Maintenance Utility
- VoIP之语音编码器
- SQL Server 2008安装和配置图解图(转)
- 金山词霸2006常规窗口不见了!只能看到最大化的的原因
- lammps教程:单原子应力计算及应力云图绘制方法
- 【供应链金融】五阿哥:如何打造钢铁电商独特供应链金融风控体系?
- 滴滴上市年营收超千亿,程维:我必须时刻保持危机感