Поширеним способом перевірки підтримки файлів cookie є переспрямування.
Це добре робити лише тоді, коли користувач намагається виконати щось, що ініціює сеанс, наприклад, увійти в систему або додати щось у свій кошик. В іншому випадку, залежно від того, як ви з цим справляєтесь, ви потенційно блокуєте доступ до всього веб-сайту для користувачів - або ботів -, які не підтримують файли cookie.
Спочатку сервер перевіряє дані для входу як звичайні - якщо дані для входу неправильні, користувач отримує цей відгук як звичайний. Якщо це правильно, тоді сервер негайно відповідає файлом cookie та переспрямуванням на сторінку, призначену для перевірки наявності файлу cookie - це може бути просто та сама URL-адреса, але з деяким прапором, доданим до рядка запиту. Якщо ця друга сторінка не отримує файл cookie, тоді користувач отримує повідомлення про те, що він не може увійти, оскільки файли cookie відключені в їх браузері.
Якщо ви вже дотримуєтесь шаблону Post-Redirect-Get для вашої форми входу, тоді це налаштування та перевірка файлу cookie не додає жодних додаткових запитів - файл cookie можна встановити під час існуючого перенаправлення та перевірити цільовим пунктом, який завантажується після переспрямування.
Тепер про те, чому я перевіряю файли cookie лише після ініційованої користувачем дії, відмінної від кожного завантаження сторінки. Я бачив, як сайти впроваджують тест cookie на кожній окремій сторінці, не розуміючи, що це матиме вплив на такі речі, як пошукові системи, які намагаються просканувати сайт. Тобто, якщо у користувача ввімкнені файли cookie, тоді тестовий файл cookie встановлюється один раз, тому їм залишається переносити переспрямування лише на першій сторінці, яку вони запитують, і з цього моменту переспрямувань немає. Однак для будь-якого браузера чи іншого користувацького агента, наприклад пошукової системи, який не повертає файли cookie, кожна окрема сторінка може просто призвести до переспрямування.
Інший метод перевірки підтримки файлів cookie - це Javascript - таким чином, переспрямування не потрібне - ви можете написати файл cookie та прочитати його практично відразу, щоб побачити, чи він був збережений, а потім отриманий. Недоліком цього є те, що він працює у сценарії на стороні клієнта - тобто, якщо ви все одно хочете, щоб повідомлення про те, чи підтримуються файли cookie, поверталося на сервер, вам все одно доведеться це організувати - наприклад, за допомогою виклику Ajax.
Для мого власного додатку я реалізую певний захист для атак "Вхід у CSRF", варіант варіантів атак CSRF, встановлюючи файл cookie, що містить випадковий маркер на екрані входу до входу користувача, і перевіряючи цей маркер, коли користувач подає свій логін деталі. Докладніше про вхід CSRF від Google. Побічним ефектом цього є те, що в той момент, коли вони входять в систему, я можу перевірити наявність цього файлу cookie - додаткове перенаправлення не потрібно.