Czy każde żądanie sieciowe wysyła pliki cookie przeglądarki?
Nie mówię o odsłonach, ale prośbie o zdjęcie, .js
plik itp.
Aktualizacja Jeśli strona internetowa zawiera 50 elementów, czyli 50 żądań. Dlaczego miałby wysyłać SAME pliki cookie dla każdego żądania, czy nie buforuje lub nie wie, że już je ma?
Odpowiedzi:
Tak, tak długo, jak żądany adres URL znajduje się w tej samej domenie i ścieżce zdefiniowanej w pliku cookie (i wszystkie inne ograniczenia - bezpieczne, httponly, nie wygasły itp.) Wstrzymują, plik cookie zostanie wysłany dla każdego żądania.
źródło
Jak powiedzieli inni, jeśli ograniczenia dotyczące hosta, ścieżki itp. Pliku cookie zostaną spełnione, zostanie ono wysłane 50 razy.
Ale zapytałeś także dlaczego: ponieważ pliki cookie są funkcją HTTP, a HTTP jest bezstanowy. HTTP jest zaprojektowany do pracy bez przechowywania przez serwer stanu między żądaniami.
W rzeczywistości serwer nie ma solidnego sposobu na rozpoznanie, który użytkownik wysyła dane żądanie; za jednym internetowym serwerem proxy może znajdować się tysiąc użytkowników (a tym samym adres IP). Gdyby pliki cookie nie były wysyłane przy każdym żądaniu, serwer nie miałby sposobu, aby dowiedzieć się, który użytkownik żąda dowolnego zasobu.
Wreszcie, przeglądarka nie ma pojęcia, czy serwer potrzebuje plików cookie, czy nie, po prostu wie, że serwer polecił mu wysłać plik cookie w przypadku każdego żądania do foo.com, więc robi to. Czasami obrazy ich potrzebują (np. Generowane dynamicznie na użytkownika), czasem nie, ale przeglądarka nie może tego stwierdzić.
źródło
Tak. Każde żądanie wysyła pliki cookie należące do tej samej domeny. Nie są buforowane, ponieważ HTTP jest bezstanowy, co oznacza, że każde żądanie musi wystarczyć, aby serwer mógł zorientować się, co z nim zrobić. Załóżmy, że masz obrazy dostępne tylko dla niektórych użytkowników; Państwo musi wysłać plik cookie uwierzytelniania z każdego z tych 50 wniosków, więc serwer nie wie, że to ty, a nie ktoś inny, albo gościem, spośród puli wniosków to coraz.
Powiedziawszy to, pliki cookie mogą nie zostać wysłane z powodu innych ograniczeń wymienionych w innych odpowiedziach, takich jak ustawienie HTTPS, ścieżka lub domena. Szczególnie tam należy zauważyć: pliki cookie nie są udostępniane między domenami. Pomaga to zmniejszyć rozmiar wywołań HTTP dla plików statycznych, takich jak wspomniane obrazy i skrypty.
Przykład: masz 4 ciasteczka na
www.stackoverflow.com
; jeśli poprosisz o towww.stackoverflow.com/images/logo.png
, wszystkie te 4 pliki cookie zostaną wysłane.Jednak jeśli poprosisz
stackoverflow.com/images/logo.png
(zauważ zmianę subdomeny) lubimages.stackoverflow.com/logo.png
te 4 pliki cookie nie będą obecne - ale być może te związane z tymi domenami będą.Możesz przeczytać więcej o żądaniach plików cookie i obrazów, na przykład w tym wpisie na blogu StackOverflow .
źródło
Nie. Nie każde żądanie wysyła pliki cookie. To zależy od konfiguracji plików cookie i połączenia klient-serwer.
Na przykład, jeśli
secure
opcja pliku cookie jest ustawiona na,true
wówczas musi być przesyłana za pośrednictwem bezpiecznego połączenia HTTPS. Oznacza, że gdy zobaczysz tę witrynę z protokołem HTTP, te pliki cookie nie będą wysyłane przez przeglądarki, ponieważ bezpieczna flaga jest prawdziwa.źródło
Cookie ma właściwość „ścieżki”. Jeśli „ścieżka = /”, odpowiedź brzmi „tak”.
źródło
/app/
lub podobne - zachowałoby to przenośność bez potrzeby posiadania oddzielnych poddomen w celu wyeliminowania zbędnego obciążenia. Możesz też na początek porzucić niepotrzebny Google Analytics. Tak długo widziałem nagłówki plików cookie, zastanawiam się, czy moja babcia je robiła na drutach.Minęły 3 lata
Jest jeszcze jeden powód, dla którego przeglądarka nie wysyła plików cookie. Możesz dodać
crossOrigin
atrybut do<script>
tagu i wartość do"anonymous"
. Zapobiegnie to wysyłaniu plików cookie na serwer docelowy. W 99,9% przypadków javascript są plikami statycznymi i nie generujesz kodu js na podstawie plików cookie żądania. Jeśli masz 1 KB plików cookie i masz 200 zasobów na swojej stronie, to użytkownik przesyła 200 KB, co może zająć trochę czasu w 3G i mieć zerowy wpływ na stronę wyników. Odwiedź atrybut HTML: crossorigin w celach informacyjnych.źródło
Wiem, że to stary wątek. Ale właśnie zauważyłem, że większość przeglądarek nie wysyła plików cookie dla domeny, jeśli dodasz kropkę końcową. Na przykład
http://example.com.
nie otrzyma ustawionych plików cookie.example.com
. Z drugiej strony Apache traktuje je jako tego samego hosta. Uważam, że jest to przydatne, aby utrudnić śledzenie w wielu domenach dla zasobów zewnętrznych, które dołączam, ale możesz go również użyć ze względu na wydajność. Należy zauważyć, że to sprawdzenie poprawnościhttps
certyfikatów. Przeprowadziłem kilka testów przy użyciu przeglądarki i własnych urządzeń. Hack działa na prawie wszystkich przeglądarkach z wyjątkiem safari (mobilnego i stacjonarnego), które będą zawierać pliki cookie w żądaniu.źródło
Krótka odpowiedź brzmi: tak. Poniższe wiersze pochodzą z dokumentacji JS
Pliki cookie były kiedyś używane do ogólnego przechowywania po stronie klienta. Chociaż było to uzasadnione, gdy były jedynym sposobem przechowywania danych na kliencie, obecnie zaleca się stosowanie nowoczesnych interfejsów API pamięci masowej. Pliki cookie są wysyłane przy każdym żądaniu, dzięki czemu mogą pogorszyć wydajność (szczególnie w przypadku mobilnych połączeń danych).
źródło