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

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

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

【 tulaoshi.com - Web开发 】

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

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

  环境介绍

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

  Code:

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

  Write.asp

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

  Code:

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

  Read.asp

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

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

  Code:

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

  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。

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

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

延伸阅读
标签: 生活常识
墙面起泡怎么办 墙面起泡的原因:比如有涂料调配中添加颜料过多或混有杂物;漆桶、刷子、滚子或喷枪不干净;漆面完全干透之前,水分渗入漆内导致漆膜失去黏附性;涂刷墙面时未清理干净墙面等。 图老师起泡处理办法: 要想解决墙面起泡的问题,首先要避免在湿度大的季节或者天气进行涂刷,其次刷涂次数的时间间隔,必须等腻子或者漆膜干...
标签: word
提示Word遇到问题需要关闭解决方法 打开Word时会提示Microsoft O(图老师整理)ffice Word遇到问题需要关闭。我们对此引起的不便表示抱歉。下面我就具体讲一下一种解决方法。 第一步:在弹出的Word遇到问题需要关闭。我们对此引起的不便表示抱歉。中,我们选择不发送。如下图所示: 第二步:这个时候会重新显示一个对话框,提...
标签: Web开发
网页制作Webjx文章简介:要解决ajax跨域问题,网上给出的方法有二. 要解决ajax跨域问题,网上给出的方法有二: 1是构建服务器端的代理。简而言之,就是ajax中调用的实质还是本机的url,而服务器端替js去取回远端地址。 2.利用script标记,生成一个标签。在js加载完成后,再执行后续操作。 就是将原来新建xmlHTT...
测试环境:JDK1.5、Tomcat5.5 1.设置Cookie 1Cookie cookie = new Cookie("key", "value"); 2cookie.setMaxAge(60); //设置60秒生存期,假如设置为负值的话,则为浏览器进程Cookie(内存中保存),关闭浏览器就失效。 3cookie.setPath("/test/test2"); //设置Cookie路径,不设置的话为当前路径(对于Servlet来说为reque...
标签: 办公软件
    一、在office/9.shtml' target='_blank' class='article'Excel中不能进行求和运算 由于在操作中更改了字段的数值后,求和字段的所有单元格中的数值没有随之变化,造成不能正常运算。可以单击“工具→选项”命令,在打开的“选项”对话框中单击“重新计算”选项卡。在“计算”选项区中选中“自动重算”单选按钮,单击...

经验教程

292

收藏

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