Насколько надежно свойство Request.Browser.Cookies в ASP.NET? - PullRequest
4 голосов
/ 11 марта 2011

Атрибут свойства Request.Browser.Cookies (типа bool) хранит информацию о том, поддерживает ли браузер клиента файлы cookie и включены ли они.

Насколько надежно свойство Request.Browser.Cookies?Это гарантированно будет правильным?Или лучше использовать метод перенаправления, предложенный Software Monkey в этом вопросе ?

Обратите внимание: это не вопрос "надежны ли файлы cookie"? Этовопрос: «Достоверна ли информация о том, принимает ли браузер пользователей куки-файлы?»

Ответы [ 2 ]

2 голосов
/ 11 марта 2011

С исправленным вопросом, новый ответ:

Свойство документации HttpBrowserCapabilitiesBase.Cookies говорит:

Это свойство не указывает, включены ли в настоящее время файлы cookie в браузере, только в том случае, если браузер может поддерживать файлы cookie.

Похоже, что он настроен на основе обнаружения браузера пользователя и базы данных возможностей браузера на сервере. Таким образом, он надежно сообщит вам, способен ли браузер хранить файлы cookie, если и только если:

  1. Строка запроса агента пользователя верна.
  2. Браузер находится в базе данных, и база данных соответствует браузеру.

Условие № 1 будет нарушено, если заголовок HTTP пользовательского агента был изменен (например, средствами разработчика или прокси-сервером). Условие № 2 будет нарушено, если браузер новее, чем база данных, или в базе данных имеется дефект.

tl; dr version: нет гарантии, относитесь к этой информации как к «максимальному усилию». И, конечно же, пользователь мог отключить файлы cookie (например, в «приватном» режиме просмотра).


Оригинальный ответ на другой вопрос:

Если вы хотите, чтобы куки, которые вы отправляете в ответе, всегда возвращались одинаково, тогда ответ будет: обычно, но не полагайтесь на это.

Возможные причины:

  • Сценарии на стороне клиента могут быть изменены не только HTTP-файлами cookie (и этот сценарий может быть введен локально).
  • Ошибка браузера.
  • Использование не браузера для отправки запроса (например, wget.exe), который не обрабатывает куки для пользователя.
  • Прокси, который изменяет запрос или ответ.
  • Изменены локальные часы в клиентской системе, чтобы вызвать истечение срока действия cookie.
  • Пользователь, изменяющий хранилище файлов cookie браузера.
1 голос
/ 11 марта 2011

Я понимаю, что люди не понимают суть вашего вопроса. Но у вас, похоже, есть сомнения в надежности метода. Я имею в виду, я мог бы спросить "Является ли Request.QueryString надежным? Будет ли он возвращать все параметры в URL запроса?" и ответ будет "да", если у вас нет информации, которая противоречит этому. Итак, у вас есть информация, что Request.Browser.Cookies не является надежным? Насколько я знаю, это так. Сталкивались ли вы с ситуацией, когда она не работает правильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...