【发布时间】:2021-03-28 16:43:15
【问题描述】:
Domain-Being-Browsed.com 有一个 javascript 函数,当触发该函数时,会对另一个域上的 php 文件进行 ajax 调用:another-domain.com/set-cookie.php
set-cookie.php 包含如下代码:
header("Access-Control-Allow-Origin: http://localhost:3000");
header("Access-Control-Allow-Credentials: true");
$cookie_set = FALSE;
$cookie_set = setcookie( 'cookie_name', 'cookie_value', $a_big_number, '/' );
if( $cookie_set ){ echo 'cookie set!'; }
javascript函数是这样的:
var url = 'http://another-domain.com/set-cookie.php';
$.ajax({
'url': url,
'xhrFields': {
withCredentials: true
}
}).done(function(resp){
console.log(resp);
});
如果我在浏览器中访问 http://another-domain.com/set-cookie.php,它会设置 cookie。 如果我触发了 javascript 函数,我会在控制台中得到响应“cookie set!”,但是当我在浏览器中加载 http://another-domain.com 时,我发现 cookie 不存在。
我发现了这篇文章:Can't set cookie on different domain,这看起来和我的一模一样,但是我已经合并了给出的答案,但它没有帮助。我错过了什么?
【问题讨论】:
-
你在开发者工具中看到 cookie 了吗?
-
使用javascript函数时,没有。如果我在浏览器中访问 php 页面,那么是的,cookie 已创建,并且在开发者工具中可见。
-
控制台有错误吗?
-
完全没有错误 - 只是来自 php 文件的消息表明 cookie 设置成功。
-
感谢 Barmar - 这导致了解决方案,我将在此处发布。
标签: php ajax cookies cross-domain