我想使用 POST 提供跨域服务。我可以看到预检选项调用成功,但是当我发布时,cookie 不会在 Chrome 中发送。相同的JavaScript和服务器代码适用于Firefox和Safari。可能是什么问题?以下是详细信息:
请求网址:http://j.test.com/Post
请求方式:选项
状态代码:200 OK
请求标头查看源代码
接受:/
接受字符集:ISO-8859-1,utf-8;q=0.7,*;q=0.3
接受编码:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:origin, x-request-with, content-type, accept
访问控制请求方法:开机自检
连接方式:保持活动
状态主机:j.test.com
来源:http://www.amazon.com
Referer:http://www.amazon.com/Gone-Girl-A-Novel-ebook/dp/B006LSZECO/ref=pd_rhf_gw_s_ts_2
User-Agent:Mozilla/5.0 (Windows NT 5.1( AppleWebKit/536.11 (KHTML, like Gecko( Chrome/20.0.1132.47 Safari/536.11
响应标头
访问控制允许凭据:true
访问控制允许标头:源、x-request-with、内容类型、accept
访问控制-允许-方法:开机自检, 选项
Access-Control-Allow-Origin:http://www.amazon.com
访问控制-最大年龄:1728000
连接方式:保持活动
状态内容长度:0
日期:2012年9月4日 星期二 16:44:48 GMT
服务器: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) {
}
});
你 muust 将带有凭据的标志设置为 true (http://techblog.constantcontact.com/software-development/using-cors-for-cross-domain-ajax-requests/(
还需要在jQuery.ajax()
通话中crossDomain: true
。