jQuery getJSON与Django发送错误的sessionid cookie

jQuery getJSON与Django发送错误的sessionid cookie,jquery,ajax,django,json,cookies,Jquery,Ajax,Django,Json,Cookies,getJSON出现问题,它为Django的sessionid cookie发送了错误的值 我有一个API在端口8000上运行。在这个URL:,如果有用户登录,则返回一个JSON文档,否则返回404代码。当我通过web浏览器直接访问API时,API可以正常工作,但我有一个客户端应用程序运行在端口8888上,运行以下代码: $(function() { window.APIConfig = { providerURL: "http://localhost:8000/", end

getJSON出现问题,它为Django的sessionid cookie发送了错误的值

我有一个API在端口8000上运行。在这个URL:,如果有用户登录,则返回一个JSON文档,否则返回404代码。当我通过web浏览器直接访问API时,API可以正常工作,但我有一个客户端应用程序运行在端口8888上,运行以下代码:

$(function() {

  window.APIConfig = {
    providerURL: "http://localhost:8000/",
    endpoint: "api/accounts/banner",
  }

  callback = function(data) {
    alert(data);
  }

  $.getJSON(
    APIConfig.providerURL + APIConfig.endpoint + "?callback=?",
    callback
  )
});
这里我得到一个404响应,因为getJSON发送的请求包含Django所需的sessionid cookie的错误值。当我直接访问URL时的请求标头为:

Cookie: csrftoken=42f709f871a99b8c514dc70c68418a1f; sessionid=958605eefdb46c516b101f5f5893474a
但是AJAX请求发送以下消息:

Cookie: csrftoken=42f709f871a99b8c514dc70c68418a1f; sessionid=c312d7a234c03f1a0cd8f878fae2b325
此外,服务器响应还包含一个新cookie:

Set-Cookie:sessionid=c56f37c9dcd8d699f949c488163ccf4c; expires=Fri, 16-Dec-2011 22:52:39 GMT; Max-Age=1209600; Path=/
因此,当我再次直接访问URL时,浏览器中也会出现404

为什么AJAX发送一个不同的cookie?它从哪里来?

两个应用(在端口8000和8888上)都设置了一个名为sessionid的cookie,这两个应用都是Django应用。AJAX在发送请求之前加载远程域的cookie值,我可以看到我设置的一些额外cookie确实正在发送,但是如果它发现它已经有了它试图加载的任何一个cookie的值,它就会忽略该值并坚持它已经有了的值。这才是真正的问题所在

我将在一个单独的问题中正确地问这个问题。

有一个(相当明显的)事实,即两个应用程序(在端口8000和8888上)都设置了一个名为sessionid的cookie,都是Django应用程序。AJAX在发送请求之前加载远程域的cookie值,我可以看到我设置的一些额外cookie确实正在发送,但是如果它发现它已经有了它试图加载的任何一个cookie的值,它就会忽略该值并坚持它已经有了的值。这才是真正的问题所在

我将在另一个问题中适当地提出这一问题