2012-10-19 111 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