2012-10-19 102 views
5

我有一個使用REST API的項目。在這裏,當我發送一個登錄請求時,他們會以JSON形式發送包含某些數據的響應。隨着在響應頭jQuery AJAX響應設置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=/ 

在這裏,我們有一個Set-Cookie,但這個cookie不會設置。我需要設置這個cookie,因爲對於任何其他API訪問,服務器都會檢查這個cookie。

我該如何解決這個問題? jQuery AJAX響應Header Set-Cookie方法的解決方案是什麼?

+0

? –

回答

6

您可以從XMLHTTPRequest獲取標題。這可能有幫助。讓我知道這是否正常。

$.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

此代碼將設置cookie的我的本地服務器。但我的問題是,我需要它來設置對於API服務器。Cookie不提供任何域名。 –

+0

我仍然不清楚..這個代碼將在你的瀏覽器上從你的Web服務器設置cookie – thecodejack