Czy odpowiedź AJAX może ustawić plik cookie?

Czy odpowiedź AJAX może ustawić plik cookie? Jeśli nie, Jakie jest moje alternatywne rozwiązanie? Czy powinienem ustawić go za pomocą Javascript lub czegoś podobnego?

 229
Author: Martin., 2010-07-27

4 answers

Tak, możesz ustawić plik cookie w żądaniu AJAX w kodzie po stronie serwera, tak jak w przypadku zwykłego żądania, ponieważ serwer nie może odróżnić zwykłego żądania od żądania AJAX.

Żądania AJAX są tylko specjalnym sposobem żądania do serwera, serwer będzie musiał odpowiedzieć tak jak w każdym żądaniu HTTP. W odpowiedzi na żądanie możesz dodać pliki cookie.

 208
Author: this. __curious_geek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-27 04:46:14

Zgodnie z sekcją 4.6.3 specyfikacji W3 dla XMLHttpRequest agent użytkownika powinien honorować nagłówek Set-Cookie. Więc odpowiedź brzmi tak, powinieneś być w stanie.

Cytat:

Jeśli user agent obsługuje zarządzanie stanem HTTP, powinien, Odrzuć i wyślij pliki cookie (tak jak otrzymano w odpowiedzi Set-Cookie nagłówka i wysłane w nagłówku pliku Cookie).

 277
Author: Strelok,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-06 13:49:38

Dla przypomnienia, należy pamiętać ,że wszystkie powyższe jest (nadal) prawdziwe tylko wtedy, gdy wywołanie AJAX jest wykonane w tej samej domenie. Jeśli szukasz ustawienia plików cookie na innej domenie za pomocą AJAX, otwierasz zupełnie inną puszkę robaków. Odczytywanie plików cookie między domenami działa jednak (lub przynajmniej serwer je obsługuje; to, czy UA klienta pozwala na dostęp do nich, to kolejny temat; od 2014 r.tak jest).

 80
Author: Bogdan Stăncescu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-18 23:39:04

Sprawdź również, czy twój serwer nie ustawia bezpiecznych plików cookie na żądanie inne niż http. Właśnie dowiedziałem się, że moje żądanie ajax było uzyskanie sesji php z "Bezpieczny" zestaw. Ponieważ nie byłem na https nie było wysyłanie z powrotem cookie sesji i moja sesja była coraz reset na każdym żądaniu ajax.

 6
Author: Phil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-27 16:36:08