对于某些大型项目的开发,可能会将一个项目拆分成若干个子项目进行开发,但是项目之间的某些页面之间通过某些入口是可以相互跳转的,因此,对于有些会话的状态也是需要共享的,例如国际化,子系统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的共享相关推荐

  1. shiro框架---关于多项目之间验证为什么需要共享session

    关于多项目之间登录验证为什么需要共享session 服务器上部署了两个项目,登录之后才可以访问其中的接口.现在想要实现,当登录项目1成功后,可以不需要再登录项目2,直接可以访问项目2中的接口. 大部分 ...

  2. 不同项目之间的控件共享

    不同项目之间的控件共享 上篇blog我有提到,不知如何解决不用项目之间的控件共享问题.很多朋友给予了热心的回答,这里一起表示感谢.        总结大家的回复,一般有2种观点,一是做成用户控件,二是 ...

  3. 在多个的共享ndk项目之间共享模块

    通过静态和共享的类库,共同的模块可以在模块间共享.然而,警告是所有这些模块式同样NDK项目的一部分.NDK运行共享和重复使用模块在NDK项目之间. 1.把这共享的如avilib的源代码移动到NDK项目 ...

  4. 从微软一站式代码库中学到的--跨域之间的session共享

    据说下面的这段代码这件可以实现不同域之间的session共享: namespace CSASPNETShareSessionBetweenSubDomainsModule {     /// < ...

  5. java两个web项目之间如何传值,两个项目之间传递参数有关问题 - 大神进

    两个项目之间传递参数问题 --- 大神进 情况 1.两个ssh项目 oms  与 GiftERP 2.调用的是GiftERP的一个Goods表,需要将表数据返回给oms项目 3.首先我oms的页面有一 ...

  6. 设置弹性框项目之间距离的更好方法

    本文翻译自:Better way to set distance between flexbox items To set the minimal distance between flexbox i ...

  7. maven引用公共包_使用github作为maven仓库存放发布自己的jar包依赖 实现多个项目公共部分代码的集中,避免团队中多个项目之间代码的复制粘贴...

    使用github作为maven仓库存放发布自己的jar包依赖 实现多个项目公共部分代码的集中,避免团队中多个项目之间代码的复制粘贴. 1.首先在本地maven位置的配置文件setting.xml(没有 ...

  8. 【博客项目】—cookie和session(七)

    [博客项目]-cookie和session(七)

  9. java 多个项目间事物_Java-web-多个独立项目之间相互调用实践

    本篇文章只涉及到应用层面,没有涉及到什么底层原理之类的,我目前的实力还没有达到那个级别.如果是大神级别的人看到这篇文章,请跳过. 项目框架也已经是搭建好了的,springboot版本为1.5,数据库操 ...

  10. Virtualbox主机和虚拟机之间文件夹共享及双向拷贝

    参考:Virtualbox主机和虚拟机之间文件夹共享及双向拷贝 - 程序员大本营 1.设置--->常规--->双向 2.设备--->安装增强功能 安装完增强功能,注意要重启虚拟机,双 ...

最新文章

  1. Maven中jar版本冲突问题的解决
  2. C 语言编程 — GDB 调试工具
  3. 《趣学Python编程》——2.3 使用变量
  4. SpringFramework的简介
  5. (四)maven之查找jar包坐标,选择jar包版本
  6. android activity切换动画
  7. java断言assert
  8. MongoDB常用语句
  9. mybatis报错Type interface xxx.Dao is not...
  10. IDEA快速修改类名和文件名
  11. 【转】程序在内存中的分布
  12. React学习初探(环境搭建)
  13. Linux Ubuntu 安装 Matlab
  14. 2.4. myisamchk — MyISAM Table-Maintenance Utility
  15. VoIP之语音编码器
  16. SQL Server 2008安装和配置图解图(转)
  17. 金山词霸2006常规窗口不见了!只能看到最大化的的原因
  18. lammps教程:单原子应力计算及应力云图绘制方法
  19. 【供应链金融】五阿哥:如何打造钢铁电商独特供应链金融风控体系?
  20. 滴滴上市年营收超千亿,程维:我必须时刻保持危机感

热门文章

  1. python求职意向怎么写_怎样写好求职简历?
  2. 老板面试怎么谈?千万不要走近误区。
  3. 【Pandas 基础应用 合并Excel工作簿】
  4. android批量转换图片格式,批量图片格式转换器
  5. Linux之Redhat7如何破解密码
  6. Altium Designer设计PCB总结(干货)
  7. 如何用 Unity 编写像炸弹人一样的游戏
  8. Unity3D C#数学系列之创建圆柱体
  9. 免费金融数据API(基金,股票),基金股票网格交易模拟服务
  10. 从移动为例,看运营商的大数据能力