很多Cookies教程中关于Domain属性都是简单地提到这个是可以设置的,只要设置成www.domain.com就只能在这个域中读取。经过测试,其实感觉这个是有点误导的。
那ASP来测试一下Cookies的Domain:
假设文件名为:cookies.asp
<%
response.cookies("myname") = "ZJ"
response.cookies("myname").Domain = "www.microsoft.com"
response.cookies("myname").Expires = Date + 365
%>
在浏览器地址栏输入:http://127.0.0.1/cookies.asp,然后你到IE工具菜单->Internet 选项->设置->查看文件,里面根本找不到这个Cookies!为什么呢?不是设置了Expires = Date + 365过期时间为1年以后吗?
把response.cookies("myname").Domain = "www.microsoft.com"这行去掉,再访问一下http://127.0.0.1/cookies.asp,再查看一下Cookies文件,结果发现会有一个Cookie:你的用户名@127.0.0.1/的Cookies文件。这又是为什么?
Domain好象根本没用嘛!一设置这个就不能生成文件!
其实Domain是必须让你设置真实的域。
去www.3322.org申请两个免费的域名(如aaa.3322.org和bbb.3322.org),两个都指向127.0.0.1。然后把上面生成Cookies的代码改成:
<%
response.cookies("myname") = "ZJ"
response.cookies("myname").Expires = Date + 365
%>
访问一下http://aaa.3322.org/cookies.asp,再查一下生成的cookies文件会发现有一个Cookie:你的用户名@aaa.3322.org。这个Cookies拿aaa.3322.org来访问是肯定没问题的,但是拿bbb.3322.org来访问是不能访问的。
想让bbb.3322.org访问aaa.3322.org生成的Cookies是可以实现的,以为它们共同属于3322.org,这个时候Cookies的Domain就能用上了。
<%
response.cookies("myname") = "ZJ"
response.cookies("myname").Domain = "3322.org"
response.cookies("myname").Expires = Date + 365
%>
在aaa.3322.org上生成这个Cookies,然后拿bbb.3322.org来访问一下,如何?能访问到了吧!也就是说,这样设置的Cookies,所有*.3322.org都能访问了!
标签: