前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >再战子域共享Cookie问题

再战子域共享Cookie问题

作者头像
小李刀刀
发布2018-03-02 15:32:08
1.4K0
发布2018-03-02 15:32:08
举报
文章被收录于专栏:PHP 开发PHP 开发

昨天贾宁旨光临寒舍,吃过晚饭回来后就跟他聊天,后来又玩了一会儿《Black Hawk Down》对战,到了大概晚上11点多,开始继续尝试用 Response.Cookies.Domain 来解决子域共享 Cookie 的问题。

根据网上的资料,包括 MSDN 的文章都说设置 Response.Cookies("domain").Domain = "Microsoft.com" 这样的形式以后,可以实现该Cookie对整个“Microsoft.com”域下的所有服务器都可以共享。我在本机测试的时候,也的确实现了“xxx.com”和“www.xxx.com”的Cookie共享,但是把测试文件传到wukangrui.net以后,www.oophome.net 却无论如何读取不到 oophome.net 写入的Cookie。我的测试程序如下:

test.asp

ASP/Visual Basic代码

代码语言:js
复制
<%       
Const CookieName="daodaoeric" 
Response.Cookies(CookieName).Domain = "oophome.net" 
Response.Cookies(CookieName)("Name") = "haha" 
Response.Cookies(CookieName)("HashKey") = "test" 
%>  

 test2.asp

ASP/Visual Basic代码

代码语言:js
复制
<%   
Const CookieName="daodaoeric" 
Response.Write Request.Cookies(CookieName)("Name")   
Response.Write Request.Cookies(CookieName)("HashKey")   
%>  

上传到空间里以后,test2.asp就无法读取Cookies,什么都不显示。后来我想,会不会是需要给test2.asp也设置Cookie作用域呢?但是又不可能写 Request.Cookies(CookieName).Domain = "oophome.net"

到睡觉的时候,这个问题还是没解决。

夜里做梦,梦见我把test.asp和test2.asp都同时加了写入和读取Cookie的操作,咦?那么test2.asp不是也可以指定Cookie作用域了吗?

醒来之后梦里的代码还历历在目,于是赶紧测试。两个文件修改如下:

test.asp

ASP/Visual Basic代码

代码语言:js
复制
<%       
Const CookieName="daodaoeric" 
Response.Cookies(CookieName).Domain = "oophome.net" 
Response.Cookies(CookieName)("Name") = "haha" 
Response.Cookies(CookieName)("HashKey") = "test" 
Response.Write Request.Cookies(CookieName)("eric")       
Response.Write Request.Cookies(CookieName)("daodao")       
%>   

test2.asp

ASP/Visual Basic代码

代码语言:js
复制
<%   
Const CookieName="daodaoeric" 
Response.Cookies(CookieName).Domain = "oophome.net" 
Response.Cookies(CookieName)("eric") = "daodao" 
Response.Cookies(CookieName)("daodao") = "Eric" 
Response.Write Request.Cookies(CookieName)("Name")   
Response.Write Request.Cookies(CookieName)("HashKey")   
%>  

果然,这下在test.asp里读取到了test2.asp写入的Cookie,在test2.asp读取到了test.asp写入的Cookie,在浏览器里分别用www.oophome.net 和 ctc.oophome.net 来访问这两个页面,也都正确显示了读取到的Cookie。

随后我把我的blog的用户Cookies处理部分根据这个测试做了修改,给写入和读取Cookie的代码前面加上了Response.Cookies(CookieName).Domian = "oophome.net",然后再测试,一切正如所期望的那样,在oophome.net的任何一个子域名下,都能正确读取到Cookie信息,判断登陆状态了。

 总结:

只要在读取和写入Cookie之前都先用Response.Cookies.Domain = "域名根",就能实现该域名根下的所有子域名共享Cookie,而如果只是在写入Cookie的时候设置作用域而在读取的时候不设置,则不能共享。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2006-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档