论坛首页 Java企业应用论坛

Cookie跨域操作

浏览 80506 次
该帖已经被评为良好帖
作者 正文
   发表时间:2006-11-15  
正常的cookie只能在一个应用中共享,即一个cookie只能由创建它的应用获得。
1.可在同一应用服务器内共享方法:设置cookie.setPath("/");
    本机tomcat/webapp下面有两个应用:cas和webapp_b,
    1)原来在cas下面设置的cookie,在webapp_b下面获取不到,path默认是产生cookie的应用的路径。
    2)若在cas下面设置cookie的时候,增加一条cookie.setPath("/");或者cookie.setPath("/webapp_b/");就可以在webapp_b下面获取到cas设置的cookie了。
    3)此处的参数,是相对于应用服务器存放应用的文件夹的根目录而言的(比如tomcat下面的webapp),因此cookie.setPath("/");之后,可以在webapp文件夹下的所有应用共享cookie,而cookie.setPath("/webapp_b/");是指cas应用设置的cookie只能在webapp_b应用下的获得,即便是产生这个cookie的cas应用也不可以。
    4)设置cookie.setPath("/webapp_b/jsp")或者cookie.setPath("/webapp_b/jsp/")的时候,只有在webapp_b/jsp下面可以获得cookie,在webapp_b下面但是在jsp文件夹外的都不能获得cookie。
    5)设置cookie.setPath("/webapp_b");,是指在webapp_b下面才可以使用cookie,这样就不可以在产生cookie的应用cas下面获取cookie了
    6)有多条cookie.setPath("XXX");语句的时候,起作用的以最后一条为准。
    6)设置多个path的方法???

2.跨域共享cookie的方法:设置cookie.setDomain(".jszx.com");
    A机所在的域:home.langchao.com,A有应用cas
    B机所在的域:jszx.com,B有应用webapp_b
    1)在cas下面设置cookie的时候,增加cookie.setDomain(".jszx.com");,这样在webapp_b下面就可以取到cookie。
    2)这个参数必须以“.”开始。
    3)输入url访问webapp_b的时候,必须输入域名才能解析。比如说在A机器输入:http://lc-bsp.jszx.com:8080/webapp_b,可以获取cas在客户端设置的cookie,而B机器访问本机的应用,输入:http://localhost:8080/webapp_b则不可以获得cookie。
    4)设置了cookie.setDomain(".jszx.com");,还可以在默认的home.langchao.com下面共享。
    5)设置多个域的方法???
最近的工作经常用到cookie,看了一些资料,虽然原来依赖cookie比较多的方案已经改成现在这个了,但是当时看得一些东西还是最好记下来,免得过些天就一干二净了,怪可惜的。老梁说过这样的文字最好不要是纯文本的,说得是。本来就已经很抽象了,最好弄点图表,就算用123列出来也好
   发表时间:2006-11-16  
不错
收藏一下
0 请登录后投票
   发表时间:2006-11-17  
引用
2.跨域共享cookie的方法:设置cookie.setDomain(".jszx.com");
A机所在的域:home.langchao.com,A有应用cas
B机所在的域:jszx.com,B有应用webapp_b
1)在cas下面设置cookie的时候,增加cookie.setDomain(".jszx.com");,这样在webapp_b下面就可以取到cookie。


照你这样说,你的web应用可以去影响其他你并不拥有的域名的cookie了?
0 请登录后投票
   发表时间:2006-11-20  
仅仅是设置,不能更改吧?

为什么设置了其他domain之后,自己还能访问?
0 请登录后投票
   发表时间:2006-11-21  
针对功能说得很好,但是道理只有一个何不讲明白呢。你这里是服务器端对cookie的设置,当然会影响到他的使用,cookie在客户端如何被识别是哪个应用下,根据的就是这个名称嘛,难道你没有用js来操作过cookie吗。
0 请登录后投票
   发表时间:2006-11-21  
sorphi 写道
引用
2.跨域共享cookie的方法:设置cookie.setDomain(".jszx.com");
A机所在的域:home.langchao.com,A有应用cas
B机所在的域:jszx.com,B有应用webapp_b
1)在cas下面设置cookie的时候,增加cookie.setDomain(".jszx.com");,这样在webapp_b下面就可以取到cookie。


照你这样说,你的web应用可以去影响其他你并不拥有的域名的cookie了?


对,可以这么说,设置了共享cookie之后,所有的*.jszx.com的域名都可以共享这个cookie
另外这个cookie是保存在浏览器中的 而不是以文件的形式保存在C:\Documents and Settings\xuly\Cookies目录下的

说明一下 这篇文章是从别的地方收藏过来的 作者给忘记了:)
0 请登录后投票
   发表时间:2006-11-21  
b应用还需要跟cas共用cookie数据,只能说明设计上存在严重问题。如果cas管理几个不同域名下的应用,你还要在cas上给每个域设cookie?
0 请登录后投票
   发表时间:2006-11-24  
差沙 写道
仅仅是设置,不能更改吧?

为什么设置了其他domain之后,自己还能访问?


你修改cookie时,要重新设置一下cookie生成时的path和domain~~不然修改是不生效的~~
引用
Ok. Now I see the Set-Cookie coming back to the browser header to kill off the cookie, but on then next request, the browser is still sending the cookie to the server! After much stuffing around I noticed that when I created the cookie, the Set-Cookie header has a path and domain, but when I delete the cookie there's no such beast. You'd think I could call Cookie.getDomain() and Cookie.getPath() on the cookie I retrieve from the request. No cigar. The browser doesn't tell you that stuff, so you just get nulls.

So then I changed my deleteCookie routine to call the same code that generated the Cookie in the first place (with domain, path, and age), and call setMaxAge(0) on that and add it to the response. All good.


http://blogs.bytecode.com.au/glen/2006/03/31/1143750630535.html

0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics