`
renhongchao
  • 浏览: 118721 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

httpservletrequest 添加跨域cookie

 
阅读更多
今天需要在用户登录后添加别的域的cookie,然后网上搜了一下,发现大多数写的都是一样,但是我测试就是不行。由于自己对cookie也不了解,所以只能接着看,然后发现了自己的cookie生成不了的原因。

下面的是我自己贴过来备用的, 原文地址请看http://www.vinceruan.info/front/cross-domain-process-cookie-session/
看一下前面跨域共享cookie的介绍就行。我的设置不了的原因就是如下面所说:在blog.vinceruan.info域下面设置www.vinceruan.info下面的cookie,然后就生成不了,解决办法是将cookie设置到.vinceruan.info下面   .是一定要加的  去掉成功与否没测试过

    浏览器提交的cookie需要满足以下两点:
1.当前域名或者父域名下的cookie
而且
2.当前路径或父路径下的cookie
要满足以上两个条件的cookie才会被提交.
有4个cookie:
cookie1:[name=value, domain=.vinceruan.info path=/]
cookie2:[name=value, domain=blog.vinceruan.info path=/java/]
cookie3:[name=value, domain=www.vinceruan.info path=/]
cookie4:[name=value, domain=blog.vinceruan.info path=/]
当我访问blog.vinceruan.info时,
cookie1可以被提交,因为.vinceruan.info是blog.vinceruan.info的父域名. path路径也一致.
cookie2不能被提交,因为虽然domain是保持一致的,但是path不一致,当前访问的是/, 但是cookie2的path是/java/
cookie3不能被提交,因为虽然path是一致的,但是www.vinceruan.info不是blog.vinceruan.info的父域名.
cookie4可以被提交,因为domain和cookie都严格保持一致.

这里需要注意的是, 在浏览器看来.www.vinceruan.info不是blog.vinceruan.info的父域名,而vinceruan.info才是blog.vinceruan.info的父域名,www.vinceruan.info也算是一个二级域名(这点如果你提交过域名到DNS服务器商的应该会知道,一般我们需要显式提交www.vinceruan.info和vinceruan.info, 否则www.vinceruan.info==vinceruan.info是不成立的).
所以如果我们需要在所有二级域名下共享islogin=1的cookie,用java代码如下:
Cookie c = new Cookie("islogin","1");
c.setDomain(".vinceruan.info");//注意是以点号开头的.
c.setPath=("/");
response.addCookie(c);

如果要在所有的二级域名下的/java/路径下共享silogin=1的cookie,用java代码如下:
Cookie c = new Cookie("islogin","1");
c.setDomain(".vinceruan.info");//注意是以点号开头的.
c.setPath=("/java/");
response.addCookie(c);

ok, 跨域共享cookie就完成了


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics