我有两个网站,两个网站位于同一个域名下。
第一个网址 - https://www.fat.service.map.global.com:24536将父域中的Cookie设置为(name=lang, value=en, domain=.global.com
)。
第二个网址 - https://fat.test.service.global.com需要访问此相同的Cookie。但是cookie从第二个URL的后端代码中看不到(null)。
但是当我在Firebug中检查cookie时,它会显示cookie的值,域值为.global.com
(这是正确的)
那么为什么我无法访问第二个URL后端的cookie?
任何人都可以对此有所了解吗?
答案 0 :(得分:0)
您对.global.com
的假设是正确的,但在设置Cookie时需要考虑更多事项。即例如,可以将cookie限制在特定端口(例如,通过Set-Cookie2
标头设置cookie时,请参阅RFC 2965)或路径。
我已经在我的本地机器上使用Apache + PHP测试了你的案例,它对我来说很好。
我的Apache配置:
# Listen on different ports
Listen 80
Listen 24536
# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80
NameVirtualHost *:24536
<VirtualHost *:24536>
DocumentRoot /path/to/my/document/root
ServerName www.fat.service.map.global.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /path/to/my/document/root
ServerName fat.test.service.global.com
</VirtualHost>
在包含以下内容的文档根目录中创建了一个PHP脚本'test.php':
<?php
// Output all cookies
var_dump($_COOKIE);
// Set the cookie when the host is 'www.fat.service.map.global.com'
if (strpos($_SERVER['HTTP_HOST'], 'www.fat.service.map.global.com') !== false) {
setcookie('lang', 'en', time() + 3600, '/', '.global.com');
}
?>
这会生成以下用于设置cookie的标题:
Set-Cookie: lang=en; expires=Sat, 27-Feb-2016 09:23:33 GMT; Max-Age=3600; path=/; domain=.global.com
您配置的唯一区别是我没有使用HTTPS,即我没有将端口443用于第二个虚拟主机。虽然我认为这没有任何区别,因为您的两个域都是通过HTTPS提供的。