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

傻傻の吖頭★☆

傻傻の吖頭★☆

2016-02-19 19:30

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

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

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

  环境介绍

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

  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放在主域名下

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

  Code:

  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。

展开更多 50%)
分享

猜你喜欢

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

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

Ajax跨域问题的一些解决方法

Web开发
Ajax跨域问题的一些解决方法

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

jQuery 跨域访问问题解决方法

Web开发
jQuery 跨域访问问题解决方法

解决ajax跨域问题的实例

Web开发
解决ajax跨域问题的实例

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

如何解决ajax跨域的问题

Web开发
如何解决ajax跨域的问题

AJAX跨域问题的解决办法

Web开发
AJAX跨域问题的解决办法

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

UTF-8转GB2312函数

UTF-8转GB2312函数

访问IIS虚拟目录需要权限的解决办法

访问IIS虚拟目录需要权限的解决办法
下拉加载更多内容 ↓