6

Próbuję ustalić, dlaczego Chrome (26.0.1410.64) i IE10 nie rozpoznaje pliku cookie ustawionego w mojej odpowiedzi z kontrolera ASP.NET Web API. Oto sytuacja:Nie można uzyskać odpowiedzi od Cookie przez Chrome & IE

Mam formularz logowania na mojej stronie, który wywołuje ajax w mojej metodzie Web API (przez HTTP POST) i że metoda Web API zwraca niektóre dane JSON, a także ustawia plik cookie w odpowiedzi (przy użyciu nagłówków HTTP). Działa doskonale w Firefoksie i Safari (czyli WebKit), ale nie w Chrome ani IE. Wygląda na to, że Chrome i IE całkowicie ignorują plik cookie, który został odesłany w odpowiedzi. Weryfikowałem (używając Fiddlera), że plik cookie jest wysyłany z powrotem w odpowiedzi, więc wiem, że tam jest - nie mogę się domyślić, dlaczego IE10 i Chrome go nie pobierają.

Wszelkie pomysły? Czy ma to coś wspólnego z tym, jak Chrome i IE10 obsługują pliki cookie odpowiedzi w żądaniach ajaxowych?

Odpowiedz

17

Więc wymyśliłem problem, chociaż nie jest to coś, co naprawdę chciałbym zaakceptować jako rozwiązanie. Chyba będę musiał sobie z tym poradzić i zawsze testować stronę na moim lokalnym komputerze za pomocą przeglądarki Firefox.

Więc tu jest problem:

Kiedy uruchamiam moją witrynę lokalnie poprzez uruchomienie go z Visual Studio i IIS na moim komputerze lokalnym, tworzy stronę internetową adresu jak http://localhost:1839/. Z jakiegoś powodu pliki cookie ajax są ignorowane przez IE10 i Chrome, gdy jest to "localhost" - ale nie wtedy, gdy jest to prawdziwie wyglądająca nazwa hosta lub adres IP. Więc jeśli edytuję plik hosta i utworzę ogólny wpis, taki jak localhost.com i wskażę go na 127.0.0.1:1839, wszystko działa dobrze w IE i Chrome (a także Firefox).

Kiedy używam adresu localhost:1839, ten plik cookie ajax działa tylko w przeglądarce Firefox.

Więc to, co robiłem, to wdrażanie mojej witryny do innego serwera IIS testu (na innym komputerze), że mam wpis test.mydomain.com w moim lokalnym pliku hosta dla - który wskazuje na test IP serwera IIS adres. Teraz IE, Chrome i Firefox akceptują pliki cookie ajax z tej sfałszowanej domeny "test.mydomain.com".

Dla tych z was, którzy wysyłają ciasteczka z powrotem na prośbę ajaxową - uważajcie na ten problem "localhost" w Chrome i IE.

+1

Mam podobny problem z Chrome v40. To naprawdę denerwujące. Zobacz tutaj: http://i.imgur.com/q7lkXBz.gif – Gaui

+1

Tak, nadal wygląda na to, że Firefox jest jedyną przeglądarką, która faktycznie akceptuje i przechowuje pliki cookie localhost, dlatego używam jej do tworzenia wszystkiego, co obejmuje żądania ajax i pliki cookie. – jamauss

+0

Udało mi się [rozwiązać ten problem] (http://stackoverflow.com/questions/28583729/localhost-cookies-not-set/28594724) z XMLHttpRequests – Gaui

2

Domena na ustawionym pliku cookie najprawdopodobniej jest w konflikcie z użyciem localhost. Jeśli edytować plik hosts i dodać alias uczyni to punkt test.mydomain.com na komputerze lokalnym:

  • ciągu C: \ WINDOWS \ system32 \ drivers \ etc \ hosts dodać następujące:
    • 127.0.0.1 test.mydomain.com
  • Zacznij swój serwer WWW wewnątrz Visual Studio
  • Zamknij wszystkie przeglądarki, a następnie załadować test.mydomain.com
+0

Ta sztuczka jest warta zrozumienia i implementacji dla wszystkich twoich stron uruchomionych na localhost Środowisko Windows. Pozwoli Ci to zaoszczędzić mnóstwo bólu głowy. – fergal303

1

To doprowadziło mnie do szału przez godzinę, aż znalazłem tę odpowiedź WR. Testowałem serwer oparty na Tornado realizujący wywołanie Auth0 po uwierzytelnieniu. Serwer użył HTTPRequest.set_secure_cookie(), który został zignorowany przez Chrome. Korzystanie z Firefoksa pomijało ten problem, podobnie jak testowanie z Chrome na innym komputerze.

Powiązane problemy