如何为另一个域设置 cookie

IT技术 javascript cookies redirect
2021-01-26 01:03:26

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

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

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

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

6个回答

您不能为另一个域设置 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");
?>
@Coder,setcookie 功能将导致 cookie 标头从 b.com 发送到浏览器。a.com 无法从 b.com 发送 cookie 标头。
2021-03-18 01:03:26
最好在答案中注意,尽管它有效,但这是不安全的。
2021-03-18 01:03:26
然而,当重定向到 b.com 时,a.com 可以以标题的形式插入相同的数据,不是吗?为什么这不存在安全漏洞?
2021-03-22 01:03:26
是的,这是非常不安全的,但它确实有效。如果 OP 拥有 a.com 和 b.com 并且 cookie 非常微不足道,那么也许没问题。
2021-03-26 01:03:26
你怎么能这样说,但是 youtube 正在读取由 gmail 创建的 cookie,以便在 youtube 上显示他们的帐户?
2021-04-03 01:03:26

与最佳答案类似,但您可以在域 A 上设置图像,而不是重定向到页面并再次返回这会导致糟糕的用户体验。

<img src="http://www.example.com/cookie.php?val=123" style="display:none;">

然后在域 B 上,即 cookie.php 中的 example.com,您将拥有以下代码:

<?php
    setcookie('a', $_GET['val']);
?>

Hattip到李苏滨

我可以向你保证,它不涉及银行余额。但好点:)
2021-03-11 01:03:26
如果您以这种方式发送 GET,您也可以使用 AJAX。
2021-03-12 01:03:26
请注意,这可能是一个非常糟糕的主意。您基本上是通过让任何人发送精心制作的 GET 请求来将该 cookie 设置为他们想要的任何值来绕过非常有意的 cookie 保护。我不知道你用那个 cookie 做什么,但我希望它不涉及银行余额。
2021-03-18 01:03:26
不错的黑客... :)
2021-03-31 01:03:26
如果在这种情况下每个人都可以使用自己的参数调用此域,您可以通过添加另一个参数来增加安全性。使用数据和额外的盐创建一个哈希并将其作为参数传递。在您的 cookie.php 中,只需通过重新创建令牌并比较它们来验证 $_GET['val'] 中的数据。
2021-04-10 01:03:26

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

iframe 非常适合我的解决方案,只需像普通的 get 请求一样将值包含在 url 中,并从服务器使用 cookie 值进行响应
2021-03-28 01:03:26
请注意,您必须正确配置 Access-Control-Allow-Origin 才能使其正常工作。
2021-03-31 01:03:26

无法为另一个域设置 cookie。

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

a.com  ->  b.com/redirect?info=some+info (and set cookie) -> b.com/other+page
从 url 设置会话 cookie 存在安全风险。网址通常会被记录下来,并允许攻击者窃取用户会话
2021-03-14 01:03:26

如果您拥有a.my-company.comandb.my-company.com而不仅仅是a.com并且b.com您可以为.my-company.com发出 cookie - 它将被接受并发送到两个域。

除非 my-company.com 在公共后缀黑洞列表中,在这种情况下,浏览器将默默地忽略所有设置 cookie 的尝试!:'-(
2021-03-23 01:03:26
你绝对是对的。但如果事情发生了。然后我们必须找到解决方案。这不是这个问题的解决方案。不要给出建议只是解决方案
2021-03-25 01:03:26
是否可以在 a.my-company.com 中为 b.my-company.com 创建 cookie?
2021-04-01 01:03:26