clq
浏览(0) +
2008-03-31 21:02:17 发表
编辑
关键字:
[2018-10-19 22:19:30 最后更新]
cookie 收集贴 好象 cookie 有些问题,所以收集一下相关东东。
clq
这个参数必须以“.”开始... -------------------------------------------------- http://www.javaeye.com/article/34400 -------------------------------------------------- 论坛首页 → Java版 → Cookie跨域操作 全部 Hibernate Spring Struts Webwork iBATIS 企业应用 设计模式 DAO 领域模型 OO Tomcat SOA JBoss J2ME 浏览 6628 次锁定老贴子 主题:Cookie跨域操作 该帖已经被评为良好帖 作者 正文 xly_971223 等级: 性别: 文章: 507 积分: 581 来自: 北京 时间: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列出来也好 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。 推荐链接 参加IBM Lotus ND8复合应用开发大赛,挑战你的编程能力!赢取大奖! IBM受欢迎信息管理软件下载推荐 返回顶楼 enhydra 等级: 性别: 文章: 49 积分: 288 来自: 深圳 时间:2006-11-16 不错 收藏一下 返回顶楼 请登录后投票 sorphi 等级: 性别: 文章: 303 积分: 645 来自: 北京 时间: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了? 返回顶楼 请登录后投票 差沙 等级: 性别: 文章: 308 积分: 792 时间:2006-11-20 仅仅是设置,不能更改吧? 为什么设置了其他domain之后,自己还能访问? 返回顶楼 请登录后投票 jianfeng008cn 等级: 性别: 文章: 478 积分: 633 时间:2006-11-21 针对功能说得很好,但是道理只有一个何不讲明白呢。你这里是服务器端对cookie的设置,当然会影响到他的使用,cookie在客户端如何被识别是哪个应用下,根据的就是这个名称嘛,难道你没有用js来操作过cookie吗。 返回顶楼 请登录后投票 xly_971223 等级: 性别: 文章: 507 积分: 581 来自: 北京 时间: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目录下的 说明一下 这篇文章是从别的地方收藏过来的 作者给忘记了:) 返回顶楼 请登录后投票 zhangwh6882 等级: 初级会员 文章: 7 积分: 58 时间:2006-11-21 b应用还需要跟cas共用cookie数据,只能说明设计上存在严重问题。如果cas管理几个不同域名下的应用,你还要在cas上给每个域设cookie? 返回顶楼 请登录后投票 flyjie 等级: 性别: 文章: 111 积分: 416 来自: 杭州 时间: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.
clq
关于Cookie跨域操作遇到的问题及解决方法 编辑: 来源: 更新:2006-6-4 点击: 1030 摘要:当你有一个Cookie组(或叫Cookie字典)使用Domain属性指定域名之后,当你在对该组的成员进行修改或新增的时候,一定要在操作之后加上Resonse.Cookies(CookieName).Domain属性。如果没有必要,请不要修改已设置Domain的Cookie组. 关键字: 正文: Cookie跨域操作看来是个简单的问题,因为只要指定Domain属性为指定网站的根域名就可以了.但是笔者在实际使用过程中却遇到了一些问题,的确值得注意. 环境介绍 cookie在www主域名下创建,并写入Domain属性,如:(为方便调试以下代码皆为asp代码) Write.asp <% Response.Cookies(CookieName)("UserName") = "SunBird" Response.Cookies(CookieName)("Password") = "xyz1234" Response.Cookies(CookieName).Domain = "xxxx.com" %> 上面文件放在www主域名下,同时在同目录下放置一个读取cookie的Read.asp Read.asp <% Response.Write Request.Cookies(CookieName)("UserName") Response.Write Request.Cookies(CookieName)("Password") %> 再放一个Read.asp文件到另外一个子域名站点里,代码同上。最后我们再做一个清除cookie的Clear.asp放在主域名下 Clear.asp <% Response.Cookies(CookieName)("UserName") = "" Response.Cookies(CookieName)("Password") = "" Response.Cookies(CookieName).Domain = "xxxx.com" %> 现在可以通过下面的执行顺序来测试,Write.asp-->主域名的Read.asp-->子域名的Read.asp 所有Read.asp页面都可以读取到Write.asp创建的cookie的值,然后再运行Clear.asp进行清除,一切都Ok,看上去没有什么问题。 但是把这种方法运用到实际的站点时却出现问题了。 问题描述: 第一次登录一切ok,所有子域名都可以访问到主域名存储的cookie,但是,一旦退出之后,子域名的cookie被清除了,但是主域名的cookie仍然保留着,强行清除主域名的cookie之后,无论怎样登录主域名下都无法保存cookie了,除非关掉浏览器重新打开。 经过多次尝试之后,无意中发现问题所在,以下是测试经过。 创建一个Write2.asp的页面放在主域名下 <% Response.Cookies(CookieName)("TEST_COOKIE") = "TEST_COOKIE" %> 第一步:关闭浏览器后,按以下顺序执行,Write.asp-->主域名的Read.asp-->子域名的Read.asp 到这里所有Read.asp读取正常。 第二步:Clear.asp-->主域名的Read.asp-->子域名的Read.asp 到这里清除操作是成功的。 第三步:Write.asp--> Write2.asp --> 主域名Read.asp --> 子域名Read.asp 到这里两个Read.asp都可以读取到cookie的值。 第四步:重新执行第二步,发现主域名Read.asp仍然输出了值,而子域名下的Read.asp的值已经被清空了。 根据以上测试总结以下几点再跨域使用cookie时需要注意的地方 1、当你有一个Cookie组(或叫Cookie字典)使用Domain属性指定域名之后,当你在对该组的成员进行修改或新增的时候,一定要在操作之后加上Resonse.Cookies(CookieName).Domain属性。 2、如果没有必要,请不要修改已设置Domain的Cookie组,直接使用Response.Cookies("CookieText") = CookieValue 来创建一个新的Cookie。
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.