cookie无法设置除当前域名或者其父域名之外的其他domain.
今天研究一天发现cookie无法设置除当前域名或者其父域名之外的其他domain.
这个是游览器出于对cookie的保护造成的,也就是cookie无法跨域设置。
对于子域名也有如下规则,当前域名只能设置当前域名以及他的父域名,不能设置子域名
如在www.wo.cao.baidu.com 域名下只能设置 cao.baidu.com,baidu.com
不能设置 da.jia.wo.cao.baidu.com的cookie。
一篇文章还不错,摘录下来
当我们给网站设置cookie时,大家有没有发现在网站的其他域名下也接收到了这些cookie。这些没用的cookie看似不占多少流量,但如果对一个日PV千万的站点来说,那浪费的资源就不是一点点了。因此在设置cookie时,对它的作用域一定要设置准确了。
我们都知道在PHP中用setcookie 来设置网站的cookie,该函数的用法如下:
bool setcookie ( string $name [, string $value [, int$expire = 0 [, string $path [, string $domain [, bool$secure = false [, bool $httponly = false ]]]]]] )今天我们就来探讨一下它的第五个参数$domain,因为它决定了cookie的作用域。
现在有如下3个域名,一个顶级域名、一个二级域名和一个三级域名:
① zydya.com
②blog.zyday.com
③one.blog.zyday.com
- 首先在①zyday.com域名下设置cookie,做四次测试,分别设置domain参数为空、'zyday.com'、'blog.zyday.com'与'one.blog.zyday.com'。
√表示该域名下能取到cookie,×表示不能取到cookie
domain参数 | zydya.com | blog.zyday.com | one.blog.zyday.com |
setcookie('name',1,time()+1) | √ | √ | √ |
setcookie('name',1,time()+1,'/','zyday.com') | √ | √ | √ |
setcookie('name',1,time() +1,'/','blog.zyday.com') |
× | × | × |
setcookie('name',1,time() +1,'/','one.blog.zyday.com') |
× | × | × |
当domain设置为空时,domain默认为当前域名,并且该域名下的子域名都可以接收到cookie。
但是domain参数设置其子域名时,所有域名就接收不到了,包括那个子域名。
- 然后在②blog.zyday.com域名下设置cookie,测试条件同上
domain参数 | zydya.com | blog.zyday.com | one.blog.zyday.com |
setcookie('name',1,time() +1) |
× | √ | √ |
setcookie('name',1,time()+1,'/','zyday.com') | √ | √ | √ |
setcookie('name',1,time()+1,'/','blog.zyday.com') | × | √ | √ |
setcookie('name',1,time()+1,'/',one.blog.zyday.com') | × | × | × |
看第二行,domain参数是zyday.com,是blog.zyday.com的父域名,那么zyday.com下所有子域名(包括zyday.com、blog.zyday.com、one.blog.zyday.com)都能接收到cookie。
当domain为自身域名时,那么其父域名不受影响,其本身与其子域名可以接收到cookie。
而设置其子域名或其他域名时,所有域名都接收不到cookie了。
- 最后在③one.blog.zyday.com域名下设置cookie
domain参数 | zydya.com | blog.zyday.com | one.blog.zyday.com |
setcookie('name',1,time() +1) |
× | × | √ |
setcookie('name',1,time()+1,'/','zyday.com') | √ | √ | √ |
setcookie('name',1,time()+1,'/','blog.zyday.com') | × | √ | √ |
setcookie('name',1,time()+1,'/',one.blog.zyday.com') | × | × | √ |
第三个测试得出的结论在上面已经总结了。再看一遍,这里就不多解释了。
domain的设置,有两点要注意:
1.在setcookie中省略domain参数,那么domain默认为当前域名。
2.domain参数可以设置父域名以及自身,但不能设置其它域名,包括子域名,否则cookie不起作用。
那么cookie的作用域:
cookie的作用域是domain本身以及domain下的所有子域名。
- cookie无法设置除当前域名或者其父域名之外的其他domain.
- 利用 document.domain 在当前的域名或者基础域名 实现跨域
- java设置Cookie后其他请求拿不到或者下次会话拿不到request.getCookie拿不到
- IE无法设置短域名下Cookie
- IE无法设置短域名下Cookie
- go 代理服务器(cookie设置失败无法登录),nginx设置Domain
- IE中cookie 无法设置domain=localhost
- 无法显示页面 要查找的页面是当前不可用。该网站可能遇到技术的问题,或者您可能需要调整您的浏览器设置。
- IE无法设置短域名下Cookie
- IE无法设置短域名下Cookie
- jQuery 点击页面 获得当前点击元素的id 或者其他信息
- 除了ROOT 用户之外其他用户无法登录图形界面解决方法
- firefox 47 tab mix plus 设置 紧邻当前标签 打开 新标签或其他标签
- PHP 如何清除COOKIE? PHP无法删除COOKIE?设置COOKIE有效期
- 由于缺少调试目标,无法开始调试。请生成项目并重试,或者相应的设置OutputPath和AssemblyName属性,使其指向目标程序集的正确位置。
- Android Webview无法播放美拍网或者优酷网视频,其他视频没问题解决办法。(网页可能暂时无法打开或已永久移至新地址)
- HttpHelps类,用来实现Http访问,Post或者Get方式的,直接访问,带Cookie的,带证书的等方式,可以设置代理
- 关于在设置启动文件夹或者设置用户选项时不能得到当前用户的解决方法
- FSO组件不可用,各种与FSO相关的功能都将出错!请运行Install.asp或者到后台网站配置处设置好FSO组件名称。或无法使用vbscript
- 当前安全设置禁止运行该页中activeX控件,该页无法正常显示