Java Cookie、域、端口
我有两个网站,都在同一个域名下 第一个URL-将父域中的cookie设置为,(Java Cookie、域、端口,java,javascript,cookies,firebug,Java,Javascript,Cookies,Firebug,我有两个网站,都在同一个域名下 第一个URL-将父域中的cookie设置为,(name=lang,value=en,domain=.global.com) 第二个URL-需要访问同一个cookie。但是cookie在第二个URL的后端代码中不可见(null) 但是当我检查Firebug中的cookie时,它显示了cookie的值,域值为.global.com(这是正确的) 那么为什么我不能在第二个URL的后端访问cookie呢 P> >你的假设关于 .Glolo.com 是正确的,但是设置
name=lang,value=en,domain=.global.com
)
第二个URL-需要访问同一个cookie。但是cookie在第二个URL的后端代码中不可见(null)
但是当我检查Firebug中的cookie时,它显示了cookie的值,域值为.global.com
(这是正确的)
那么为什么我不能在第二个URL的后端访问cookie呢
<> P> >你的假设关于<代码> .Glolo.com <代码>是正确的,但是设置Cookie时还有更多的事情要考虑。例如,cookie可能被限制在特定端口(当cookie通过
set-Cookie2
头设置时,请参阅)或路径
我已经在本地机器上使用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>
并为这两个域提供了以下输出:
与您的配置唯一不同的是,我没有使用HTTPS,也就是说,我没有为第二个虚拟主机使用端口443。虽然我认为这没有什么区别,因为您的两个域都是通过HTTPS提供服务的。两个URL都是延迟域。浏览器不允许您查看来自不同URL(域)的cookie。如果您需要使用这个函数,请考虑使用Apache ReWITE规则来屏蔽域。@ NIAURJ84U两个URL都具有“.Global .com”的同一个域,不是吗?没有浏览器存储它。URL@niiraj874u因此,将域属性作为“.global.com”放在Cookie上没有任何影响
<?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');
}
?>
Set-Cookie: lang=en; expires=Sat, 27-Feb-2016 09:23:33 GMT; Max-Age=3600; path=/; domain=.global.com