47
我有一個跨域AJAX GET獲得預先成功,但餅乾不會附加到GET請求。 當用戶單擊登錄按鈕時,會發出一條POST來登錄該用戶,該用戶可以正常跨域進行工作。 JavaScript的是:CORS請求 - 爲什麼cookie未發送?
$.ajax(signin_url, {
type: "POST",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(credentials),
success: function(data, status, xhr) {
signInSuccess();
},
error: function(xhr, status, error) {
signInFailure();
},
beforeSend: function(xhr) {
xhr.withCredentials = true
}
});
的響應頭包括一個cookie:
Set-Cookie:user_token=snippysnipsnip; path=/; expires=Wed, 14-Jan-2032 16:16:49 GMT
如果登錄成功,一個JavaScript GET請求以獲取當前用戶的詳細信息:
function signInSuccess() {
$.ajax(current_user_url, {
type: "GET",
contentType: "application/json; charset=utf-8",
success: function(data, status, xhr) {
displayWelcomeMessage();
},
beforeSend: function(xhr) {
xhr.withCredentials = true;
}
});
}
從Chrome的OPTIONS請求返回的CORS相關標頭爲:
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:X-Requested-With, X-Prototype-Version, Content-Type, Origin, Allow
Access-Control-Allow-Methods:POST, GET, OPTIONS
Access-Control-Allow-Origin:http://192.168.0.5
Access-Control-Max-Age:1728000
但是,GET請求上不發送cookie。
有在得到這個工作花了4個小時。希望我以前看過這篇文章。謝謝! – ChrisRich 2015-01-21 06:03:58
PUT/OPTIONS似乎不能以相同的方式工作。爲什麼cookie會發送GET/POST而不是PUT預檢選項請求? – 2015-04-30 15:07:06
本地主機上的Cookies不工作(未設置)。如果您需要在本地使用Cookie,請改爲使用基於ip的域名(例如'127.0.0.1')。 – Dziamid 2015-05-29 11:06:38