2009-06-24 7 views
35

Chciałbym wiedzieć, czy kiedy zrobię $ .post (...) z jQuery, jest jakikolwiek plik cookie wysłany do serwera w żądaniu pocztowym?Czy jQuery wysyła pliki cookie w poście?

Dzięki!

+2

Jeśli używasz Firebug, można spojrzeć w „Console "obszar, w którym można zobaczyć wszystkie żądania. Zajrzyj do nagłówków plików cookie. –

Odpowiedz

54

Pliki cookie są wysyłane z żądaniami Ajax.

Gdy dla pliku cookie ustawiono flagę HTTPOnly, ten plik cookie jest ukryty przed skryptami po stronie klienta, ale plik cookie jest nadal wysyłany z żądaniami Ajax.

+3

HTTPOnly nie wpływa na żądania AJAX/HTTP, a jedynie ukrywa plik cookie od skryptu po stronie klienta. Nadal będzie wysyłany na serwer. –

+1

@Christian - poprawiony, dzięki. –

2

Używanie tych samych plików cookie na kliencie i serwerze nie jest możliwe po włączeniu funkcji httpOnlyCookies. Istnieje bardzo dobry powód ten przełącznik na zbyt:

http://www.codinghorror.com/blog/archives/001167.html

+0

+1 Dzięki za ten link! – MSpreij

+2

To jest nieprawidłowe. Spójrz na to pytanie, aby uzyskać naprawdę dobre wyjaśnienie HTTPOnly + AJAX: http://stackoverflow.com/questions/27972/are-httponly-cookies-a-viable-option-for-an-ajax-website –

2

Korzystanie Firefox + Firebug można zobaczyć dokładnie to, co wysyła jQuery i jak. Przydatny do debugowania!

0

Przykro mi być mokrym kocem, ale zamierzam zaprzeczyć pozytywnym emocjom tutaj i powiedzieć NIE.

Aktualnie buduję aplikację za pomocą $ .post, aby połączyć się z moim zapleczem API, który jest obsługiwany przez Express i node.js. Używam oprogramowania pośredniczącego parsera plików Express, aby odczytać pliki cookie wysłane w każdym żądaniu. Jeśli uderzę w mój punkt końcowy bezpośrednio za pomocą przeglądarki, serwer zaplecza może zobaczyć pliki cookie widoczne w mojej domenie. Jednak gdy używam $ .post w mojej aplikacji obiekt cookie jest po prostu pusty.

Jest możliwe, że jestem brakuje czegoś, ale ja testuje to przez ostatnie kilka godzin i zawarcie Doszedłem do tego, że ciasteczka są po prostu nie wysłał za pomocą jQuery $ .post żądanie:/

+0

Spróbuj z typowy post html. Twój debugger plików cookie brzmi paskudnie. To czy ciasteczka są wysyłane, czy nie, jest decyzją przeglądarki, a nie skryptem/jquery. –

+8

Dzieje się tak, ponieważ wykonujesz żądanie między domenami, a pliki cookie nie są wysyłane z żądaniami XHR między domenami. http://stackoverflow.com/questions/7911710/jquery-ajax-call-not-sending-cookie – Josh

0

Jedną z rzeczy do rozważenia jest ścieżka do plików cookie. Jeśli skrypt ładowany ajaxowo ustawia plik cookie, wówczas jego ścieżka może być inna niż strona nadrzędna, umieszczając go w innym zakresie dla niektórych aplikacji serwerowych lub JQuery. Dzisiaj spędziłem trochę czasu, obracając kółka, po czym zauważyłem, że ciasteczka, które miałem problemy z czytaniem, miały inną ścieżkę.

Proste fix dla mnie było, aby ustawić ścieżkę wszystkich plików cookie do/z jquery w moim żądania ajax tak:

$.cookie("isolates_grid_tgl", "true", { path: "/" }); 

firebug cookies view