PHP Cookie从jQuery / Ajax调用返回空

时间:2013-11-04 23:21:13

标签: php jquery ajax

我有一个域名(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加载页面时,数据库条目已更新,但所有值都为空。)

1 个答案:

答案 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
  }
});