假设我有一个网站叫a.com,当这个网站的一个特定页面被加载时,比如说页面链接,我想为另一个网站b.com设置一个cookie,然后将用户重定向到b.com。

我的意思是,在a.com/link的负载上,我想为b.com设置一个cookie并将用户重定向到b.com。

我测试了一下,浏览器实际上收到了来自a.com/link的cookie,但它没有在重定向请求时将该cookie发送到b.com。这正常吗?

我们可以为其他域设置cookie吗?


当前回答

无法为另一个域设置cookie。

如果要将数据传递到另一个域,可以将其编码到url中。

a.com  ->  b.com/redirect?info=some+info (and set cookie) -> b.com/other+page

其他回答

你不能,至少不能直接。这将是一个严重的安全风险。

虽然可以指定Domain属性,但规范说:“用户代理将拒绝cookie,除非Domain属性为cookie指定了包括原始服务器的范围。”

由于源服务器是a.com,不包括b.com,所以无法设置。

您需要获取b.com来设置cookie。您可以通过(例如)HTTP重定向到b.com并返回。

不能为其他域设置cookie。允许这样做会带来巨大的安全漏洞。

您需要获取b.com来设置cookie。如果是a.com,将用户重定向到b.com/setcookie.php?c=value

setcookie脚本可以包含以下内容来设置cookie并重定向到b.com上的正确页面

<?php
    setcookie('a', $_GET['c']);
    header("Location: b.com/landingpage.php");
?>

无法为另一个域设置cookie。

如果要将数据传递到另一个域,可以将其编码到url中。

a.com  ->  b.com/redirect?info=some+info (and set cookie) -> b.com/other+page

也许你可以使用Iframe。Facebook可能使用了这种技术。你可以在这里阅读更多。Stackoverflow使用了类似的技术,但使用了HTML5本地存储,更多信息请参阅他们的博客

在本链接中,我们将找到解决方案链接。

setcookie("TestCookie", "", time() - 3600, "/~rasmus/", "b.com", 1);