2014-10-01 96 views
0

我有两个子域名:“安全”和“下载”的同一个域名:“10.0.50.18”。如何从cookie中读取cookie,当cookie设置在不同的子域上时?

上 '下载' 我设置使用jQuery这样一个cookie:

$.cookie("width", w, {domain: "10.0.50.18"}); 

上 '安全',我想读的是饼干这样的:

$width = $_COOKIE["width"]; 

但它是不加工。

任何人都可以帮忙吗? 谢谢!

+0

bcoz子域名不一样 – 2014-10-01 11:51:47

回答

2

Cookie不会跨子域工作,除非您在创建Cookie时指定。你将需要这样做:

$.cookie("width", w, {domain: ".mydomain.com"}); 

这将允许mydomain.com的所有子域共享cookie。

+1

好吧。我想补充一点,如果你的“安全”子域是一个不同的协议(例如https而不是http),你仍然可能遇到问题。您可以从https读取http cookie,但不能以其他方式读取。 – 2014-10-01 11:56:07

+0

谢谢,但如果你看看我的问题,这正是我所说的我已经在做... – yogev 2014-10-01 12:04:39

+0

它与你在做什么不一样。您正在将IP地址放入域部分。这是行不通的。 Cookie与域名主机协同工作。请注意。在域名之前,这允许子域名。 – haxtbh 2014-10-01 12:43:35

0

抱歉,无法按照您尝试的方式使用来自不同域的Cookie。 解决方案的一些有趣的建议,你可以在这里阅读 Cross-Domain Cookies

+1

他正在针对*被允许的不同子域进行尝试。 – 2014-10-01 12:37:57

0

可以设置cookie到一个IP地址,你就不能使用通配符它。

domain .10.0.50.18 is not valid 
domain 10.0.50.18 is valid 

IP地址不像DNS域那样容易遵循组织边界。数字小于或大于Web服务器IP地址的IP地址可能不一定驻留在同一个组织中。出于安全原因,不允许任何形式的cookie的域属性中的IP地址通配。这有效地消除了任何形式的IP地址的域属性的用处。

http://www.ietf.org/rfc/rfc2109.txt

完全限定的主机名(FQHN)意味着要么完全限定 域名主机的(FQDN)(即,一个完全指定的域 名称在顶层结束域名,如.com或.uk),或主机的数字网际协议(IP)地址。完整的 合格的域名是首选; 使用数字IP地址是 强烈不鼓励

+0

感谢您的回答。唯一的问题是,我没有使用.10.0.50.18,但是10.0.50.18,你认为这很好 - 但它不起作用... 如果我的FQHN是:https://10.0.50.18/ secure/welcome.php 我应该通过$ .cookie()方法的域来传递什么? – yogev 2014-10-01 14:25:38

+0

您的FQDN不是IP地址 - 它是您的实际域名。 – 2014-10-01 14:31:47

+0

有了IP,你希望如何处理子域@yogev? – 2014-10-01 16:21:28