2011-07-04 11 views
12

Mam CORS pracującego nad moim bieżącym projektem, chociaż jedną rzeczą, której nie mogę sprawić, że działa poprawnie, są pliki cookie.JQuery Ajax CORS + HttpOnly Cookie

Teraz otrzymuję ciasteczko w porządku, serwer wydaje i wysyła go, a Firefox akceptuje, widzę to w sekcji ciasteczek ognistych. Jednak kiedy ich kolejne połączenia do tej usługi nie robi wydaje się, aby wysłać plik cookie w nagłówku ...

GET /some/entity/ HTTP/1.1 
Host: localhost:1837 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0 
Accept: */* 
Accept-Language: en-gb,en;q=0.5 
Accept-Encoding: gzip, deflate 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Connection: keep-alive 
Referer: http://localhost:6879 
Origin: http://localhost:6879 

Czy muszę robić nic specjalnego z mojego wywołanie ajax?

var ajaxOptions = { 
    url: serviceResourceUrl, 
    type: "get", 
    dataType: "json", 
    success: successCallback, 
    error: failedCallback, 
    xhrFields: { withCredentials: true } 
}; 

$.ajax(ajaxOptions); 

Odpowiedz

9

Spróbuj użyć właściwości beforeSend zamiast opcji xhrFields. W twoim przypadku:

var ajaxOptions = { 
    url: serviceResourceUrl, 
    type: "get", 
    dataType: "json", 
    success: successCallback, 
    error: failedCallback, 
    beforeSend: function(xhr){ 
     xhr.withCredentials = true; 
    } 
}; 

$.ajax(ajaxOptions); 

Więcej informacji można znaleźć tutaj: Sending credentials with cross-domain posts?

+1

ja pierwotnie próbuje zrobić to w ten sposób, ale nie byłby to działa w ogóle. Widziałem post na xhrFields: {...} i pracował dla mnie odzyskiwanie plików cookie. Spróbuję ponownie zastosować drugą metodę. – somemvcperson

+0

Po prostu wypróbowałem, wciąż nie ma szczęścia. Plik cookie można zobaczyć w firebugie, ma on poprawne wygasanie i domenę. Podczas debugowania w serwisie nie ma plików cookie :( – somemvcperson

+0

Przepraszamy za wszystkie komentarze, ale wystarczy dwukrotnie sprawdzić domenę iw firebugu raportuje localhost (co jest częściowo poprawne), jednak usługa w fazie rozwoju jest faktycznie na localhost: 1873. Próbuję edytować plik cookie i umieścić tę domenę, po prostu ignoruje ją i wydaje się, że zachowuje tylko localhost.Błąd wydaje się ustawić go poprawnie ... więc jest to prawdopodobnie błąd z firefox? – somemvcperson