Tôi có một tên miền chéo AJAX GET được định trước thành công, nhưng cookie không được đính kèm với yêu cầu GET. Khi người dùng nhấp vào nút đăng nhập, POST được thực hiện để đăng nhập người dùng vào, hoạt động chính xác với miền chéo. JavaScript là:Yêu cầu CORS - tại sao cookie không được gửi?
$.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
}
});
các tiêu đề phản ứng bao gồm một cookie:
Set-Cookie:user_token=snippysnipsnip; path=/; expires=Wed, 14-Jan-2032 16:16:49 GMT
Nếu đăng nhập thành công, một GET yêu cầu Javascript được thực hiện để có được thông tin chi tiết của người dùng hiện tại:
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;
}
});
}
Các tiêu đề liên quan đến CORS được trả về từ yêu cầu OPTIONS của Chrome là:
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
Tuy nhiên, không có cookie nào được gửi trên yêu cầu GET.
đã dành 4 giờ vào việc này để làm việc. Ước gì tôi đã nhìn thấy bài đăng này trước đây. Cảm ơn! – ChrisRich
PUT/OPTIONS dường như không hoạt động theo cùng một cách. Tại sao cookie được gửi cho GET/POST nhưng không gửi yêu cầu OPTION prefuts PUT? –
Cookie không hoạt động (không được đặt) trên máy chủ cục bộ. Thay vào đó, hãy sử dụng tên miền dựa trên ip (ví dụ: '127.0.0.1') nếu bạn cần sử dụng cookie cục bộ. – Dziamid