Обычный способ проверки поддержки файлов cookie - перенаправление.
Это хорошая идея делать это только тогда, когда пользователь пытается сделать что-то, что инициирует сеанс, например, войти в систему или добавить что-то в свою корзину. В противном случае, в зависимости от того, как вы с этим справитесь, вы потенциально блокируете доступ ко всему сайту для пользователей или ботов, которые не поддерживают файлы cookie.
Во-первых, сервер проверяет данные входа в систему как обычно - если данные входа неверны, пользователь получает эту обратную связь как обычно. Если это правильно, то сервер немедленно отвечает файлом cookie и перенаправлением на страницу, предназначенную для проверки этого файла cookie - который может быть тем же самым URL, но с некоторым флагом, добавленным в строку запроса. Если эта вторая страница не получает куки-файл, то пользователь получает сообщение о том, что он не может войти в систему, поскольку куки-файлы отключены в их браузере.
Если вы уже используете шаблон Post-Redirect-Get для своей формы входа, то этот параметр и проверка файла cookie не добавляют никаких дополнительных запросов - файл cookie может быть установлен во время существующего перенаправления и проверяться местом назначения, которое загружает после перенаправления.
Теперь о том, почему я провожу тест cookie только после действия, инициированного пользователем, а не при каждой загрузке страницы. Я видел, как сайты внедряют тест cookie на каждой странице, не понимая, что это повлияет на такие вещи, как поисковые системы, пытающиеся сканировать сайт. То есть, если у пользователя включены файлы cookie, тогда тестовый файл cookie устанавливается один раз, поэтому ему нужно перенести перенаправление только на первую запрашиваемую страницу, и с этого момента перенаправления не будут. Однако для любого браузера или другого пользовательского агента, такого как поисковая система, которая не возвращает файлы cookie, каждая страница может просто привести к перенаправлению.
Другой метод проверки поддержки файлов cookie - с помощью Javascript - в этом случае перенаправление не требуется - вы можете записать файл cookie и практически сразу же прочитать его, чтобы узнать, был ли он сохранен, а затем извлечен. Обратной стороной этого является то, что он запускается в сценарии на стороне клиента, то есть если вы все еще хотите, чтобы сообщение о том, поддерживаются ли файлы cookie, возвращалось на сервер, вам все равно придется это организовать - например, с помощью вызова Ajax.
Для моего собственного приложения я реализую некоторую защиту от атак CSRF входа в систему, варианта атак CSRF, путем установки файла cookie, содержащего случайный токен, на экране входа в систему до входа пользователя в систему и проверки этого токена, когда пользователь отправляет свой логин. Детали. Узнайте больше о Login CSRF от Google. Побочным эффектом этого является то, что в момент входа в систему я могу проверить наличие этого файла cookie - дополнительное перенаправление не требуется.