为什么Cookie头没有设置在phantomjs中的同域$ .ajax请求中?
我通过jQuery的$.ajax(request)
函数在同一个域内$.ajax(request)
。 不幸的是,Cookie标头永远不会设置(既不是POST
也不是GET
),我不知道为什么。
如果我正确理解jQuery Ajax,则应根据页面cookie(如document.cookie
)设置Cookie
标头。 我已经跟踪了document.cookie
并且对我来说似乎它已经正确地更新了(根据Set-Cookie
标题)每个xhr响应。 但是在调试请求时,所有都没有设置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);
我的脚本如何工作:
- 域名在浏览器中打开(尚未添加cookie)
- 通过
$.ajax
xhr申请登录(回复有cookies) - 通过
$.ajax
请求我想要查看/修改/等的页面。 (请求错过Cookie
标头) -
GO TO 3.
||GO TO 5.
- 通过
$.ajax
注销
编辑:
我使用phantomjs
[1.9]作为浏览器。 使用Firefox或Chrome时不会发生此问题。 我发现了这个问题,有人在描述类似的行为: phantomjs – 没有为任何XHR / POST / GET AJAX请求发送Cookie