我有一个域名(example.com)使用PHP设置cookie,如下所示:
$source = 123;
setcookie("source", $source, time()+3600, '/', ".example.com");
我希望跨子域共享此Cookie。当我导航到" sub.example.com/index.php"并运行以下PHP代码:
echo $_COOKIE['source'];
...我得到了正确的输出:123。好!
我遇到的问题是,当我使用jQuery向" sub.example.com"进行ajax调用时,cookie无法输出。它是空的。
$.ajax({
type: "POST",
url: 'http://sub.example.com/index.php',
dataType: "text",
error: function(jqXHR,textStatus,errorThrown) {
},
success: function() {
// DOES SOMETHING
}
});
有什么东西我不了解子域中的ajax和cookie吗?
(我知道上面的Ajax调用没有做任何事情。在我的现实代码中,子域上的页面将COOKIE值写入数据库。当我直接加载页面时在我的浏览器中,数据库已正确更新。当我从ajax加载页面时,数据库条目已更新,但所有值都为空。)
答案 0 :(得分:1)
最后,问题是ajax调用。因为它是跨域(或跨子域),答案是在xhrFields参数(http://api.jquery.com/jQuery.ajax/)中。
$.ajax({
type: "POST",
url: 'http://sub.example.com/index.php',
dataType: "text",
xhrFields: {
withCredentials: true
}
error: function(jqXHR,textStatus,errorThrown) {
},
success: function() {
// DOES SOMETHING
}
});