2012-12-19 10 views
8

Nie mogę ustawić pliku cookie po dodaniu pliku domain przy użyciu żądania przekierowania. Próbuję osiągnąć to poprzez wywołanie żądania za pomocą ajax jquery.Plik cookie CORS z polem domeny jest ustawiany tylko w przeglądarce Firefox przy użyciu jQuery AJAX

Czy można go uruchomić w innych przeglądarkach niż Firefox?

Niektóre nagłówki żądania:

Accept:application/json, text/javascript, */*; q=0.01 
Content-Length:55 
Content-Type:application/x-www-form-urlencoded; charset=UTF-8 
Host:localhost:53862 
Origin:http://localhost:54265 
Referer:http://localhost:54265/ 

Response Nagłówki:

Access-Control-Allow-Credentials:true 
Access-Control-Allow-Headers:x-requested-with, origin, content-type, accept, Proxy-Connection 
Access-Control-Allow-Methods:GET,POST,PUT,OPTIONS, DELETE 
Access-Control-Allow-Origin:http://localhost:54265 
Set-Cookie:Auth=l_hash=123456&user=xyzl&remember_me=false; expires=Fri, 18 Jan 2013 13:42:10 GMT; domain=localhost; path=/ 

Kod:

$.ajax({ 
    type: "PUT", 
    url: apiHost + "api/account/login/", 
    data: $("#loginBarForm").serialize(), 
    dataType: "json", 
    contentType: "application/x-www-form-urlencoded; charset=UTF-8", 
    crossDomain: true, 

    xhrFields: { 
     withCredentials: true 
    }, 
}); 

Ev erything jest w porządku w firefox. Chrome nie konfiguruje pliku cookie. Tylko jeśli pole domeny zostanie usunięte, wszystko działa w każdej przeglądarce. Widzę, że w następnym żądaniu (po ustawieniu cookie) ten plik cookie pojawia się w nagłówku. Przykład z firefox zamówienie po ustawieniu odpowiedź ciasteczka (gdy reakcja miała pole Domain):

Cookie: Auth=l_hash=123456&user=xyz&remember_me=false 
+0

Czy jesteś pewien, że 'localhost' jest prawidłową domeną nagłówka' Set-Cookie'? Według [RFC] (http://www.ietf.org/rfc/rfc2109.txt) musi zawierać co najmniej jedną "osadzoną" kropkę. FireFox może implementować to w mniej restrykcyjny sposób. Zamiast tego wypróbuj swój adres IP. – Stan

+0

@Stan Dziękuję bardzo, proszę zaksięguj to jako odpowiedź. – Mariusz

Odpowiedz

5

Myślę, że problem może być z localhost, który nie jest poprawnym domeny Set-Cookie cel. Według RFC musi zawierać co najmniej jedną "osadzoną" kropkę. FireFox może implementować to w mniej restrykcyjny sposób. Zamiast tego wypróbuj swój adres IP.

+0

Po prostu zamieniłem 'localhost' na' 127.0.0.1'. Dzięki! – Matt

3

Miałem ten sam problem i okazało się, że ustawienia przeglądarki blokują pliki cookie innych firm (Chrome> Ustawienia> Ustawienia zaawansowane> Prywatność> Ustawienia treści> Blokuj pliki cookie stron trzecich i dane witryn). Zezwolenie na pliki cookie rozwiązało problem!

+0

Tak, to rozwiązało mój problem po wielu godzinach frustracji! Tylko w moim przypadku Firefox blokował pliki cookie stron trzecich, a Chrome je zezwalał. – alexw

Powiązane problemy