我通过jQuery的$.ajax(request)
函数在同一个域中发出请求。不幸的是,Cookie标头从未设置(POST
和GET
),我不知道为什么。
如果我正确理解jQuery Ajax,则应根据页面cookie(如Cookie
)设置document.cookie
标头。我已跟踪document.cookie
并且对我来说,似乎每次xhr响应都会正确更新(根据Set-Cookie
标题)。但是在调试请求时,所有都没有设置Cookie
标头。
我的请求创建方式的简化版本:
var request = {
type: 'POST',
data: 'theDataIsCorrect=true',
async: false,
url: '/a/relative/url/like/this?maybe=even&with=this',
// withCredentials does not help (ignored on same domain request anyways)
xhrFields: { withCredentials: true },
beforeSend: function(jqXHR) { doStuff(); },
error: function(jqXHR, textStatus, errorThrown) { errorHandling(); },
complete: function(jqXHR, textStatus, errorThrown) { complete(); }
};
$.ajax(request);
我的脚本如何运作:
$.ajax
xhr请求登录(响应有Cookie)$.ajax
向我想要查看/修改/等的页面请求。 (请求错过Cookie
标题)GO TO 3.
|| GO TO 5.
$.ajax
编辑:
我使用phantomjs
[1.9]作为浏览器。使用Firefox或Chrome时不会发生此问题。我发现了这个问题,有人在描述类似的行为:phantomjs - Cookie is not being sent for any XHR/POST/GET AJAX requests