假设我有一个网站叫a.com,当这个网站的一个特定页面被加载时,比如说页面链接,我想为另一个网站b.com设置一个cookie,然后将用户重定向到b.com。
我的意思是,在a.com/link的负载上,我想为b.com设置一个cookie并将用户重定向到b.com。
我测试了一下,浏览器实际上收到了来自a.com/link的cookie,但它没有在重定向请求时将该cookie发送到b.com。这正常吗?
我们可以为其他域设置cookie吗?
假设我有一个网站叫a.com,当这个网站的一个特定页面被加载时,比如说页面链接,我想为另一个网站b.com设置一个cookie,然后将用户重定向到b.com。
我的意思是,在a.com/link的负载上,我想为b.com设置一个cookie并将用户重定向到b.com。
我测试了一下,浏览器实际上收到了来自a.com/link的cookie,但它没有在重定向请求时将该cookie发送到b.com。这正常吗?
我们可以为其他域设置cookie吗?
当前回答
与上面的答案相似,但不是重定向到页面,然后再返回,这会导致糟糕的用户体验,您可以在域a上设置图像。
<img src="http://www.example.com/cookie.php?val=123" style="display:none;">
然后在域B, cookie。php中的example.com,你会有如下代码:
<?php
setcookie('a', $_GET['val']);
?>
向苏宾致敬
其他回答
也许你可以使用Iframe。Facebook可能使用了这种技术。你可以在这里阅读更多。Stackoverflow使用了类似的技术,但使用了HTML5本地存储,更多信息请参阅他们的博客
与上面的答案相似,但不是重定向到页面,然后再返回,这会导致糟糕的用户体验,您可以在域a上设置图像。
<img src="http://www.example.com/cookie.php?val=123" style="display:none;">
然后在域B, cookie。php中的example.com,你会有如下代码:
<?php
setcookie('a', $_GET['val']);
?>
向苏宾致敬
在本链接中,我们将找到解决方案链接。
setcookie("TestCookie", "", time() - 3600, "/~rasmus/", "b.com", 1);
这是我用过的。注意,这个cookie是在open (http)中传递的,因此是不安全的。我不用它做任何需要安全的事情。
站点A生成一个令牌,并将其作为URL参数传递给站点B。 站点B接受令牌并将其设置为会话cookie。
您可以添加加密/签名来确保安全。好好研究一下如何正确地做到这一点。
你不能,但是…如果你拥有这两个页面,那么……
1)可以通过查询参数(http://siteB.com/?key=value)发送数据
2)你可以在站点A内创建一个站点B的iframe,你可以从一个地方发送帖子到另一个地方。由于站点B是站点B cookie的所有者,它将能够通过处理正确的帖子消息来设置您需要的任何值。(你应该阻止其他不想要的发件人向你发送消息!这取决于你和你决定使用的机制来防止这种情况发生)