假设我有一个网站叫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发送POST请求。POST请求只在服务器端,客户端不能访问。
您可以使用CURL(推荐,服务器端)或隐藏方法="POST"表单(客户端)从a.com发送POST请求到b.com。如果选择后者,可能需要对JavaScript进行模糊处理,这样用户就无法理解算法并干扰算法。
在b.com上做一个网关来设置cookie:
<?php
if (isset($_POST['data']) {
setcookie('a', $_POST['data']);
header("Location: b.com/landingpage");
}
?>
如果想进一步提高安全性,可以在两边(a.com和b.com)实现一个函数,使用加密密码加密(a.com上)和解密(b.com上)数据。
如果您正在尝试做一些必须绝对安全的事情(例如传输登录会话),请尝试oAuth或从https://api.cloudianos.com/docs#v2/auth获得一些灵感
其他回答
你不能,至少不能直接。这将是一个严重的安全风险。
虽然可以指定Domain属性,但规范说:“用户代理将拒绝cookie,除非Domain属性为cookie指定了包括原始服务器的范围。”
由于源服务器是a.com,不包括b.com,所以无法设置。
您需要获取b.com来设置cookie。您可以通过(例如)HTTP重定向到b.com并返回。
如果你有a.my-company.com和b.my-company.com,而不是只有a.com和b.com,你可以为。my-company.com域名发布一个cookie -它将被接受并发送到两个域名。
在本链接中,我们将找到解决方案链接。
setcookie("TestCookie", "", time() - 3600, "/~rasmus/", "b.com", 1);
不能为其他域设置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");
?>
与上面的答案相似,但不是重定向到页面,然后再返回,这会导致糟糕的用户体验,您可以在域a上设置图像。
<img src="http://www.example.com/cookie.php?val=123" style="display:none;">
然后在域B, cookie。php中的example.com,你会有如下代码:
<?php
setcookie('a', $_GET['val']);
?>
向苏宾致敬