Cookie 未在 Chrome 跨域发布中发送
Posted
技术标签:
【中文标题】Cookie 未在 Chrome 跨域发布中发送【英文标题】:Cookie not sent in Chrome Cross Domain Post 【发布时间】:2012-08-29 09:48:27 【问题描述】:我想使用 POST 提供跨域服务。我可以看到 preflight OPTIONS 调用成功,但是当我发布时,cookie 没有在 Chrome 中发送。相同的 javascript 和服务器代码适用于 Firefox 和 Safari。可能是什么问题呢?以下是详细信息:
请求网址:http://j.test.com/Post 请求方法:OPTIONS 状态码:200 OK 请求标头查看源代码 接受:/ 接受字符集:ISO-8859-1,utf-8;q=0.7,*;q=0.3 接受编码:gzip、deflate、sdch 接受语言:en-US,en;q=0.8 Access-Control-Request-Headers:origin、x-requested-with、content-type、accept 访问控制请求方法:POST 连接:保持活动 主持人:j.test.com 来源:http://www.amazon.com 参考:http://www.amazon.com/Gone-Girl-A-Novel-ebook/dp/B006LSZECO/ref=pd_rhf_gw_s_ts_2 用户代理:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.11 (Khtml, like Gecko) Chrome/20.0.1132.47 Safari/536.11
响应标头 访问控制允许凭据:true Access-Control-Allow-Headers:origin、x-requested-with、content-type、accept 访问控制允许方法:POST、OPTIONS 访问控制允许来源:http://www.amazon.com 访问控制最大年龄:1728000 连接:保持活动 内容长度:0 日期:格林威治标准时间 2012 年 9 月 4 日星期二 16:44:48 服务器:nginx
我使用 jQuery:
jQuery.ajax(
type: "POST",
url: "http://j.test.com/Post",
xhrFields:
withCredentials: true
,
data:
referringUrl: document.URL
,
success: function(data)
,
error: function (responseData, textStatus, errorThrown)
);
【问题讨论】:
你找到问题了吗? 【参考方案1】:您的jQuery.ajax()
呼叫中可能还需要crossDomain: true
。
【讨论】:
【参考方案2】:您必须将标志 withCredentials 设置为 true (http://techblog.constantcontact.com/software-development/using-cors-for-cross-domain-ajax-requests/)
【讨论】:
以上是关于Cookie 未在 Chrome 跨域发布中发送的主要内容,如果未能解决你的问题,请参考以下文章
浏览器未在启用 CORS 的情况下跨域跨域发送 cookie
即使所有 CORS 允许,Firefox 也不会保留跨域发送的 cookie
cookie 未在 chrome 或 firefox 中的 localhost 上设置
CORS withCredentials XHR 预检未在 Firefox 中发布 Cookie
Chrome 未在我的 OpenID Connect 工作流程 (ASP.NET OWIN) 中保存/返回 Nonce cookie