2015-06-25 30 views
9

Tôi đang AJAXing một cuộc gọi đến một API dịch vụ khác, sau đó phải trả lại cookie sẽ được đặt trong trình duyệt của tôi để cho phép tôi thực hiện các cuộc gọi API còn lại của mình .Tiêu đề Set-Cookie không đặt cookie trong Chrome

Tuy nhiên, trong khi tiêu đề phản hồi bao gồm tiêu đề 'Đặt cookie', không cookie nào thực sự được đặt. Tôi đang sử dụng Google Chrome.

Đây là Headers đáp ứng:

Access-Control-Allow-Origin:* 
Cache-Control:no-cache 
Connection:keep-alive 
Content-Encoding:gzip 
Content-Length:37 
Content-Type:application/json 
Date:Thu, 25 Jun 2015 18:27:37 GMT 
Expires:Thu, 25 Jun 2015 18:27:36 GMT 
Server:nginx/1.4.6 (Ubuntu) 
Set-Cookie:sessionid=67cb9796aa794a4975b28876ea6dd3d5; expires=Thu, 09-Jul-2015 18:27:37 GMT; httponly; Max-Age=1209600; Path=/ 
Vary:Cookie 

Và đây là lời gọi AJAX:

$.ajax({ 
      type: "POST", 
      crossDomain: true, 
      contentType: 'text/plain', 
      data: data, 
      url: urlhere 
      success: function(result, status, xhr){ 
       console.log('hi'); 
       console.log(xhr.getAllResponseHeaders()); 
      }, 
      error: function(xhr){ 
       console.log(xhr.status); 
       console.log(xhr.statusText); 
      } 
}); 

Các trang tài nguyên của Chrome cũng cho thấy rằng không có cookie được thiết lập. Bất kỳ và tất cả sự giúp đỡ sẽ được đánh giá rất nhiều!

+1

Bạn đã xem tại đây: http://stackoverflow.com/questions/16019135/set-cookie-without-page-refresh – testing123

Trả lời

7

Bạn cần phải thêm withCredentials vào cuộc gọi XHR của bạn, câu trả lời này cho thấy cách thực hiện điều đó với jQuery. https://stackoverflow.com/a/7190487 Nếu không có cờ bổ sung đó, trình duyệt sẽ không chấp nhận tiêu đề tập hợp cookie.

Các vấn đề liên quan