再战子域共享Cookie问题
昨天贾宁旨光临寒舍,吃过晚饭回来后就跟他聊天,后来又玩了一会儿《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代码
<%
Const CookieName="daodaoeric"
Response.Cookies(CookieName).Domain = "oophome.net"
Response.Cookies(CookieName)("Name") = "haha"
Response.Cookies(CookieName)("HashKey") = "test"
%>
test2.asp
ASP/Visual Basic代码
<%
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代码
<%
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代码
<%
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的时候设置作用域而在读取的时候不设置,则不能共享。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- k8s群集的三种Web-UI界面部署
- Hive通过Jdbc连接HiveServer2
- SAP Spartacus OccCmsComponentAdapter的findComponentsByIds方法
- 分布式锁:二、Redis锁
- 面试官:kill -9 进程杀不掉,怎么办?
- SAP Spartacus的OccCmsPageNormalizer
- Redis性能指标监控!你知几何?
- Rust FFI 编程 - Bindgen 工具介绍
- synchronized的实现原理——锁膨胀过程
- 大点干!早点散----------rsync+inotify实现远程实时同步
- 听说MongoDB你很豪横?-------------MongoDB数据库基础详解
- 听说MongoDB你很豪横?-------------MongoDB 部署分片群集以及管理分片
- SAP Spartacus和product相关的标准normalizer
- 【Rust 日报】2020-09-09 引入“auditable”
- 听说MongoDB你很豪横?-------------MongoDB复制集以及管理优化