Jaka jest różnica między tworzeniem plików cookie na serwerze a na kliencie? Czy są to tak zwane pliki cookie po stronie serwera i pliki cookie po stronie klienta? Czy istnieje sposób tworzenia plików cookie, które można odczytać tylko na serwerze lub na kliencie?
http
cookies
session-cookies
Rahul
źródło
źródło
Odpowiedzi:
COOKIES HTTP
Pliki cookie to pary klucz / wartość używane przez witryny internetowe do przechowywania informacji o stanie w przeglądarce. Załóżmy, że masz witrynę internetową (example.com), gdy przeglądarka żąda wyświetlenia strony internetowej, witryna może wysyłać pliki cookie do przechowywania informacji w przeglądarce.
Przykład żądania przeglądarki:
Przykładowa odpowiedź z serwera:
Tutaj dwa pliki cookie foo = 10 i bar = 20 są przechowywane w przeglądarce. Druga wygaśnie 30 września. Przy każdym kolejnym żądaniu przeglądarka prześle pliki cookie z powrotem na serwer.
SESJE: Pliki cookie po stronie serwera
Pliki cookie po stronie serwera są nazywane „sesjami”. Witryna w tym przypadku zapisuje w przeglądarce pojedynczy plik cookie zawierający unikalny identyfikator sesji. Informacje o statusie (foo = 10 i bar = 20 powyżej) są przechowywane na serwerze, a identyfikator sesji służy do dopasowania żądania do danych przechowywanych na serwerze.
Przykłady użycia
Możesz używać zarówno sesji, jak i plików cookie do przechowywania: danych uwierzytelniających, preferencji użytkownika, zawartości wykresu w witrynie e-commerce itp.
Plusy i minusy
Poniżej wady i zalety rozwiązań. To pierwsze, które przychodzą mi do głowy, na pewno są inne.
Zalety plików cookie:
Wady plików cookie:
Zalety sesji:
Wady sesji:
źródło
secure
?Prawdopodobnie masz na myśli różnicę między plikami cookie Http Only a ich odpowiednikiem?
Http Only cookies nie mogą być dostępne (odczyt lub zapis) w JavaScript po stronie klienta, tylko po stronie serwera. Jeśli flaga Http Only nie jest ustawiona lub plik cookie jest tworzony w JavaScript (po stronie klienta), plik cookie może być odczytywany i zapisywany w JavaScript (po stronie klienta), a także po stronie serwera.
źródło
Wszystkie pliki cookie są klientami i serwerami
Nie ma różnicy. Zwykły plik cookie można ustawić po stronie serwera lub klienta. „Klasyczny” plik cookie zostanie odesłany z każdym żądaniem. Plik cookie ustawiony przez serwer zostanie wysłany do klienta w odpowiedzi. Serwer wysyła plik cookie tylko wtedy, gdy jest wyraźnie ustawiony lub zmieniony, podczas gdy klient wysyła plik cookie przy każdym żądaniu.
Ale zasadniczo jest to ten sam plik cookie.
Ale zachowanie może się zmienić
Plik cookie to w zasadzie
name=value
para, ale po wartości może znajdować się kilka atrybutów oddzielonych średnikiem, które wpływają na zachowanie pliku cookie, jeśli jest tak zaimplementowany przez klienta (lub serwer). Te atrybuty mogą dotyczyć czasu życia, kontekstu i różnych ustawień zabezpieczeń.Tylko HTTP (nie dotyczy tylko serwera)
Jeden z tych atrybutów może być ustawiony przez serwer, aby wskazać, że jest to plik cookie wyłącznie HTTP. Oznacza to, że plik cookie jest nadal przesyłany tam iz powrotem, ale nie będzie dostępny w JavaScript. Zwróć jednak uwagę, że plik cookie nadal tam jest! To tylko wbudowana ochrona w przeglądarce, ale jeśli ktoś użyłby absurdalnie starej przeglądarki, takiej jak IE5, lub jakiegoś niestandardowego klienta, może faktycznie odczytać plik cookie!
Wygląda więc na to, że istnieją „pliki cookie serwera”, ale w rzeczywistości ich nie ma. Te pliki cookie są nadal wysyłane do klienta. Na kliencie nie ma sposobu, aby zapobiec wysyłaniu plików cookie na serwer.
Alternatywy dla osiągnięcia `` jedyności ''
Jeśli chcesz przechowywać wartość tylko na serwerze lub tylko na kliencie, potrzebujesz innego rodzaju magazynu, takiego jak plik lub baza danych na serwerze lub lokalny magazyn na kliencie.
źródło
document.cookie="foo=bar"
następujefetch("/foobar", {credentials: 'include'} )
nie ma ciasteczka wysyłane zawierającefoo=bar
. Właśnie wypróbowałem ten kod bezpośrednio na tej stronie, używając DevTools i konsoli.Tak, możesz tworzyć pliki cookie, które można odczytać tylko po stronie serwera. Są to nazywane „tylko HTTP” -cookies, jak wyjaśniono już w innych odpowiedziach
Nie, nie ma sposobu (znam) na tworzenie plików „cookie”, które można odczytać tylko po stronie klienta. Pliki cookie mają na celu ułatwienie komunikacji klient-serwer.
ALE, jeśli chcesz coś NAJLEPSZEGO „pliki cookie tylko klienta”, istnieje prosta odpowiedź: użyj „Pamięci lokalnej”.
Pamięć lokalna jest w rzeczywistości prostsza pod względem składni niż pliki cookie. Dobre, proste podsumowanie dotyczące plików cookie i lokalnego przechowywania można znaleźć pod adresem:
https://courses.cs.washington.edu/courses/cse154/12au/lectures/slides/lecture21-client-storage.shtml#slide8
Wskazówka: możesz użyć plików cookie utworzonych w JavaScript do przechowywania rzeczy związanych z GUI, których potrzebujesz tylko po stronie klienta. ALE plik cookie jest wysyłany do serwera w przypadku KAŻDEGO wykonanego żądania, staje się częścią nagłówków żądania http, przez co żądanie zawiera więcej danych, a tym samym wolniej się wysyła.
Jeśli Twoja strona ma 50 zasobów, takich jak obrazy, pliki css i skrypty, plik cookie jest (zazwyczaj) wysyłany z każdym żądaniem. Więcej na ten temat w Czy każde żądanie sieciowe wysyła do przeglądarki pliki cookie?
Lokalna pamięć masowa nie ma tych wad związanych z transferem danych, nie wysyła żadnych danych. To jest wspaniałe.
źródło