2012-10-19 30 views
5

Tôi có một dự án sử dụng API REST. Ở đây khi Isend yêu cầu đăng nhập, họ gửi cho tôi phản hồi khi JSON tiếp tục một số dữ liệu. Cùng với điều đó trong đáp ứng Tiêu đềBộ đầu đề cookie jQuery AJAX Reponse Đặt tiêu đề cookie

Access-Control-Allow-Origin:* 
Connection:keep-alive 
Content-Length:239 
Content-Type:application/json 
Date:Fri, 19 Oct 2012 06:28:12 GMT 
Server:Apache/2.2.22 (Amazon) 
Set-Cookie:session=username; Path=/ 

Ở đây chúng ta có một Set-Cookie, nhưng cookie này không được thiết lập. Tôi cần cookie này để được giải quyết, bởi vì đối với bất kỳ truy cập API nào khác, máy chủ sẽ kiểm tra cookie này.

Tôi làm cách nào để giải quyết vấn đề này? Giải pháp cho phương thức Cookie-Header Set-Cookie của jQuery AJAX là gì?

+0

đâu bạn làm cho yêu cầu này? –

Trả lời

6

Bạn có thể nhận tiêu đề từ XMLHTTPRequest. Điều này có thể hữu ích. Hãy cho tôi biết nếu điều này đang làm việc.

$.ajax({ 
    type: 'POST', 
    url:'url.do', 
    data: formData, 
    success: function(data, textStatus, XMLHttpRequest){ 
     var cookietoSet=XMLHttpRequest.getResponseHeader('Set-Cookie'); 

     Set_Cookie(cookietoSet.split('=')[0],cookietoSet.split('=')[1],expires, path, domain, secure)//change as per ur needs 
    } 
    error: function (XMLHttpRequest, textStatus, errorThrown) { 
     alert(XMLHttpRequest.getResponseHeader('some_header')); 
    } 
    }); 




function Set_Cookie(name, value, expires, path, domain, secure) 
{ 
// set time, it's in milliseconds 
var today = new Date(); 
today.setTime(today.getTime()); 

/* 
if the expires variable is set, make the correct 
expires time, the current script below will set 
it for x number of days, to make it for hours, 
delete * 24, for minutes, delete * 60 * 24 
*/ 
if (expires) 
{ 
expires = expires * 1000 * 60 * 60 * 24; 
} 
var expires_date = new Date(today.getTime() + (expires)); 

document.cookie = name + "=" +escape(value) + 
((expires) ? ";expires=" + expires_date.toGMTString() : "") + 
((path) ? ";path=" + path : "") + 
((domain) ? ";domain=" + domain : "") + 
((secure) ? ";secure" : ""); 
} 
+0

Mã này sẽ thiết lập cookie cho máy chủ địa phương của tôi. Nhưng vấn đề của tôi là tôi cần nó để thiết lập cho máy chủ API Cookie không cung cấp bất kỳ tên miền nào –

+0

tôi vẫn chưa rõ ... mã này sẽ đặt cookie từ Máy chủ web ur trên trình duyệt của bạn – thecodejack

2

Tôi nghĩ rằng vấn đề thực sự ở đây là nếu bạn có cài đặt bảo mật/cookie của trình duyệt của bạn thiết lập để hoang tưởng sau đó một số trình duyệt (ít nhất là FF & IE) dường như bỏ qua XHR dựa tiêu đề Set-Cookie.

Đây là liên kết đến một số trợ giúp FF có thể hữu ích cho người dùng của bạn. http://support.mozilla.org/en-US/kb/fix-login-issues-on-websites-require-passwords

Tôi muốn có một câu trả lời/workaround tốt hơn cho điều này 8 (

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