关于Cookie跨域操作遇到的问题及解决方法

2016-02-19 19:30 17 1 收藏

下面图老师小编要向大家介绍下关于Cookie跨域操作遇到的问题及解决方法,看起来复杂实则是简单的,掌握好技巧就OK,喜欢就赶紧收藏起来吧!

【 tulaoshi.com - Web开发 】

  Cookie跨域操作看来是个简单的问题,因为只要指定Domain属性为指定网站的根域名就可以了.

  但是笔者在实际使用过程中却遇到了一些问题,的确值得注意.

  环境介绍

  cookie在www主域名下创建,并写入Domain属性,如:(为方便调试以下代码皆为asp代码)

  Code:

  Write.asp

  %
  Response.Cookies(CookieName)("UserName") = "SunBird"
  Response.Cookies(CookieName)("Password") = "xyz1234"
  Response.Cookies(CookieName).Domain = "xxxx.com"
  %
  上面文件放在www主域名下,同时在同目录下放置一个读取cookie的Read.asp

  Code:

  Read.asp

  %
  Response.Write Request.Cookies(CookieName)("UserName")
  Response.Write Request.Cookies(CookieName)("Password")
  %
  再放一个Read.asp文件到另外一个子域名站点里,代码同上。

  最后我们再做一个清除cookie的Clear.asp放在主域名下

  Code:

  Clear.asp

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  %
  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的值已经被清空了。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  
  根据以上测试总结以下几点再跨域使用cookie时需要注意的地方

  1、当你有一个Cookie组(或叫Cookie字典)使用Domain属性指定域名之后,当你在对该组的成员进行修改或新增的时候,一定要在操作之后加上Resonse.Cookies(CookieName).Domain属性。
  2、如果没有必要,请不要修改已设置Domain的Cookie组,直接使用Response.Cookies("CookieText") = CookieValue 来创建一个新的Cookie。

来源:http://www.tulaoshi.com/n/20160219/1621179.html

延伸阅读
标签: 电脑入门
有时我们打开word时会出现一个对话框,Microsoft Office Word 遇到问题需要关闭。我们对此引起的不便表示抱歉。 步骤方法 1、首先不要重新安装word,这样也没有用的。 2、打开C盘,找到如下目录:C:Documents and SettingsAdministratorApplication DataMicrosoftTemplates。 3、删除该目录下的模板文件Normal.dot。 4、然后随便打开...
标签: 生活常识
墙面起泡怎么办 墙面起泡的原因:比如有涂料调配中添加颜料过多或混有杂物;漆桶、刷子、滚子或喷枪不干净;漆面完全干透之前,水分渗入漆内导致漆膜失去黏附性;涂刷墙面时未清理干净墙面等。 图老师起泡处理办法: 要想解决墙面起泡的问题,首先要避免在湿度大的季节或者天气进行涂刷,其次刷涂次数的时间间隔,必须等腻子或者漆膜干...
标签: word
提示Word遇到问题需要关闭解决方法 打开Word时会提示Microsoft O(图老师整理)ffice Word遇到问题需要关闭。我们对此引起的不便表示抱歉。下面我就具体讲一下一种解决方法。 第一步:在弹出的Word遇到问题需要关闭。我们对此引起的不便表示抱歉。中,我们选择不发送。如下图所示: 第二步:这个时候会重新显示一个对话框,提...
测试环境:JDK1.5、Tomcat5.5 1.设置Cookie 1Cookie cookie = new Cookie("key", "value"); 2cookie.setMaxAge(60); //设置60秒生存期,假如设置为负值的话,则为浏览器进程Cookie(内存中保存),关闭浏览器就失效。 3cookie.setPath("/test/test2"); //设置Cookie路径,不设置的话为当前路径(对于Servlet来说为reque...
标签: Web开发
1.写个JS文件放在要请求的数据的服务器上,比如Outlook.js,在outlook.js里请求你本服务器的其他动态页面数据,请求完用document.write(把请求到的数据写出来)。 2.在另一个服务器上用script src='你的第1步的服务器/outlook.js路径'/script。 这样就可以把服务器1的数据动态放到服务器2的页面里了。  

经验教程

972

收藏

84
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部