2012-10-19 12 views
5

Ho un progetto che utilizza un'API REST. Qui quando invio una richiesta di accesso, mi stanno inviando la risposta come JSON che contiene alcuni dati. Insieme a questo nell'intestazione di rispostajQuery AJAX Reponse Set Cookie Header

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=/ 

Qui abbiamo una Set-Cookie, ma questo cookie non tramonta. Ho bisogno che questo cookie sia impostato, perché per qualsiasi altro accesso API, il server controllerà questo cookie.

Come posso risolvere questo problema? Qual è la soluzione per il metodo jQuery AJAX risposta intestazione set-cookie?

+0

Dove si stanno facendo questa richiesta? –

risposta

6

È possibile ottenere intestazioni da XMLHTTPRequest. Questo può aiutare. Fammi sapere se funziona.

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

Questo codice sarà impostato dei cookie per il mio server locale. Ma il mio problema è che ho bisogno di impostare per il server API. Cookie non fornisce alcun nome di dominio. –

+0

non sono ancora chiaro ... questo codice imposterà cookie dal tuo server Web sul tuo browser – thecodejack

2

penso che il vero problema è che se si dispone di impostazioni di privacy/dei cookie del browser impostate su paranoico poi alcuni browser (almeno FF & IE) sembrano ignorare basate intestazioni Set-Cookie XHR.

Ecco un collegamento ad alcuni aiuti FF che potrebbero essere utili per i tuoi utenti. http://support.mozilla.org/en-US/kb/fix-login-issues-on-websites-require-passwords

Vorrei che ci fosse una migliore risposta/soluzione per questo 8 (

Problemi correlati