作者:尚伦旺 | 来源:互联网 | 2018-03-13 15:02
域名和COOKIE
偶然想到一个问题:www.g.cn能把COOKIE设置为.g.cn,那么www.com.cn能设置把COOKIE设置为.com.cn吗?
试验结果:不能。因为浏览器知道www.com.cn的后缀是.com.cn而不是.cn,所以禁止设置COOKIE。
因为浏览器内置了域名后缀列表。todo:如果以后出现新的后缀,而老浏览器没法更新列表,岂不是会允许设置COOKIE?
|
extension后缀 |
一级域名 |
二级域名 |
www.g.cn |
.cn |
g.cn |
*.g.cn |
www.com.cn |
.com.cn |
www.com.cn |
*.www.com.cn |
www.google.com.cn |
.com.cn |
google.com.cn |
*.google.com.cn |
www.example.com能读取到.example.com的COOKIE吗?
能。
www.example.com能读取到example.com的COOKIE吗?
不能。todo:把www.example.com和example.com做SSO,即可防止COOKIE带到static.example.com。
example.com能读取到www.example.com的COOKIE吗?
答:不能。
setCOOKIE('a', 'aa', time() + 1234, '/', 'example.com'); 设置的COOKIE是 .example.com 还是 example.com的?
答:是.example.com的。
如果想设置example.com的COOKIE,需要使用setCOOKIE('default', 'default', time() + 1234, '/');。
COOKIE的设置和读取范围:
HTTP请求域名 |
一级域名 |
COOKIE可设置(并可读取)的范围 |
COOKIE不可设置 |
COOKIE不可读取 |
example.com |
example.com |
example.com,.example.com |
www.example.com |
www.example.com |
www.example.com |
example.com |
www.example.com,.www.example.com,.example.com |
example.com |
example.com |
g.com.cn |
g.com.cn |
g.com.cn,.g.com.cn |
.com.cn |
|
www.com.cn |
www.com.cn |
www.com.cn,.www.com.cn |
.com.cn |
设置COOKIE代码: 代码如下:
setCOOKIE('default', 'default', time() + 1234, '/');
setCOOKIE('a', 'aa', time() + 1234, '/', 'example.com');
setCOOKIE('b', 'bb', time() + 1234, '/', '.example.com');
?>
读取COOKIE代码: 代码如下:
var_dump($_COOKIE);
?>
结果截图: