Typowym sposobem sprawdzenia obsługi plików cookie jest przekierowanie.
Warto to zrobić tylko wtedy, gdy użytkownik próbuje zrobić coś, co inicjuje sesję, na przykład zalogować się lub dodać coś do koszyka. W przeciwnym razie, w zależności od tego, jak sobie z tym radzisz, potencjalnie blokujesz dostęp do całej witryny użytkownikom - lub robotom - które nie obsługują plików cookie.
Najpierw serwer sprawdza dane logowania w normalny sposób - jeśli dane logowania są nieprawidłowe, użytkownik otrzymuje tę informację w normalny sposób. Jeśli to prawda, serwer natychmiast odpowiada za pomocą pliku cookie i przekierowania do strony, która jest zaprojektowana do sprawdzania tego pliku cookie - może to być po prostu ten sam adres URL, ale z pewną flagą dodaną do ciągu zapytania. Jeśli ta druga strona nie otrzyma pliku cookie, użytkownik otrzyma komunikat, że nie może się zalogować, ponieważ pliki cookie są wyłączone w jego przeglądarce.
Jeśli już stosujesz się do wzorca Post-Redirect-Get dla formularza logowania, to ustawienie i sprawdzenie pliku cookie nie powoduje dodania żadnych dodatkowych żądań - plik cookie można ustawić podczas istniejącego przekierowania i sprawdzić przez ładowane miejsce docelowe po przekierowaniu.
Teraz, dlaczego przeprowadzam test plików cookie tylko po akcji zainicjowanej przez użytkownika, innej niż przy każdym załadowaniu strony. Widziałem witryny wdrażające test plików cookie na każdej stronie, nie zdając sobie sprawy, że będzie to miało wpływ na takie rzeczy, jak wyszukiwarki próbujące zaindeksować witrynę. Oznacza to, że jeśli użytkownik ma włączoną obsługę plików cookie, to testowy plik cookie jest ustawiany tylko raz, więc musi wytrzymać przekierowanie tylko na pierwszej żądanej stronie i od tego momentu nie ma przekierowań. Jednak w przypadku dowolnej przeglądarki lub innego klienta użytkownika, takiego jak wyszukiwarka, które nie zwracają plików cookie, każda strona może po prostu skutkować przekierowaniem.
Inną metodą sprawdzenia obsługi plików cookie jest Javascript - w ten sposób przekierowanie nie jest konieczne - można zapisać plik cookie i odczytać go praktycznie natychmiast, aby sprawdzić, czy został zapisany, a następnie pobrany. Wadą tego jest to, że działa w skrypcie po stronie klienta - tj. Jeśli nadal chcesz, aby komunikat o tym, czy obsługiwane są pliki cookie, wraca do serwera, nadal musisz to zorganizować - na przykład za pomocą wywołania Ajax.
W mojej aplikacji wdrażam pewne zabezpieczenia przed atakami „Login CSRF”, wariantem ataków CSRF, ustawiając plik cookie zawierający losowy token na ekranie logowania przed zalogowaniem się użytkownika i sprawdzając ten token, gdy użytkownik podaje swój login Detale. Przeczytaj więcej o logowaniu CSRF od Google. Efektem ubocznym jest to, że po zalogowaniu się mogę sprawdzić istnienie tego pliku cookie - dodatkowe przekierowanie nie jest konieczne.