Xpoint
   [напомнить пароль]

4?? Cookie required

Метки: [без меток]
2006-08-20 17:18:14 [обр] Eugene Efremov(0/68)[досье]

Имеется система, которая требует, чтобы куки у юзера были включены.

Вопрос: как наиболее корректно послать тех, у кого они выключены? В смысле — какой код ошибки лучше всего возварщать в этом случае?

На вскидку я нашел два более-менее подходящих:

400 Bad Request
412 Precondition Failed

Но это, все-таки, не совсем то...

спустя 42 минуты [обр] Давид Мзареулян(9/1003)[досье]
А зачем выдавать код ошибки? Наличие/отсутствие поддержки кук — это проблема не на уровне HTTP-протокола. Вы ещё на отсутствие у юзера московской прописки выдавайте 400…
спустя 3 часа 5 минут [обр] Eugene Efremov(0/68)[досье]

Не, отсутствие прописки — это 401 ;-)

А если серьезно — то что есть отсутсвие кук с точки зрения протокола? Это отсутствие вполне определенных заголовков. Так что, IMHO, было бы логично возвращать код ошибки, имеюший примерно такой смысл: "Требуются некоторые дополнительные заголовки, без них мы запрос не принимаем".

спустя 13 часов [обр] Николай Комиссаров aka Survivor(0/81)[досье]
Eugene Efremov[досье] А не лучше ли отдать страницу, где будет написано, что нужно включить куки. Не уверен, что юзер будет разбираться, что означает ваш код ошибки.
спустя 3 часа 12 минут [обр] Eugene Efremov(0/68)[досье]

Естественно, к коду ошибки такая страница будет прилагаться. И даже со ссылкой на подробное описание, что есть куки, с чем их едят, и как их включать/выключать в разных браузерах.

Просто, логично, чтобы при выдаче каджой страницы с сообщением об ошибке возвращался и соответствующий код. И для всех остальных случаев так оно и есть. Если оно будет выбиваться из этого ряда — это будет некрасиво.

спустя 14 минут [обр] Давид Мзареулян(9/1003)[досье]
Eugene Efremov[досье] Что значит «логично»? Какую конкретно проблему решит не-200-й статус?
спустя 2 часа 9 минут [обр] Eugene Efremov(0/68)[досье]

Ну, хотя бы, например, объяснит роботу, куки не поддерживающиму, что лезть сюда бессмысленно.

Что касается "нелогично" — имеется достаточно строгая закономерность: код, имеющий четкую и логичную внутреннюю структуру — т.е. красиво написанный с точки зрения программиста — пораждает более правильно и эффективно работающие программы. Т.е. программы, которые ведут себя более корректно (==красиво) по отношению к пользователю.

Пример от противного, близкий к обсуждаемой теме: некоторые печально известные хостинги вместо 404 делают внешний редирект на страницу с надписью "файл не найден" и со статусом 200. Это нелогично и некрасиво с точки зрения программиста — нарушаются стандарты. И это некрасиво также по отношению к тем, кто будет таким сайтом пользоваться — сложно исправить ошибочно введенный адрес, лишний трафик, качалки не распознают мертвые ссылки и т.д.

Полагаю, я внятно объяснил, почему я считаю нужным пользоваться такими критериями как "логичность" и "красота кода"? Если да — предлагаю завязать с оффтопиком и, все-таки, отвечать на заданный вопрос по существу...

спустя 44 минуты [обр] Давид Мзареулян(9/1003)[досье]

Eugene Efremov[досье] Какой конкретно робот неправильно себя ведёт с Вашим сайтом? Поисковый бот? Так из них никто куки не поддерживает.

Выдача 200 вместо 404 порождает вполне конкретную проблему: в поисковых индексах не стираются удалённые страницы. Поэтому, если страница удалена, надо выдавать 404. Вот пример логичного, проблемно-ориентированного подхода.

Какую проблему решаете ВЫ?

спустя 10 часов [обр] Eugene Efremov(0/68)[досье]
Какой конкретно робот неправильно себя ведёт с Вашим сайтом? Поисковый бот? Так из них никто куки не поддерживает.

Какой конкретно браузер требует, чтобы xpoint.ru возвращал валидный XHTML 1.0 Strict? А если никакой — так нафига вообще соблюдать какие-то там стандарты?..

Выдача 200 вместо 404 порождает вполне конкретную проблему: в поисковых индексах не стираются удалённые страницы. Поэтому, если страница удалена, надо выдавать 404.

Вообще-то, если страница ранее существовала, а теперь удалена и нужно явно сообщить всем что теперь ее нет — надо возвращать 410.

Какую проблему решаете ВЫ?

Какую задачу я решаю — написано в начале этого треда.
Что касается проблем — я предпочитаю разбираться с ними до того, как они появятся. В данном случае гарантия отсутствия проблем — возвращать в случае ошибки такой ответ, который поймет как человек, так и машина.

P.S. Давид Мзареулян[досье], Ваши сообщения здесь — оффтопик. Когда я создавал этот тред, я расчитывал на конструктивный диалог, а не на флейм на тему "это вообще нафиг никому не нужно". Если Вам нечего сказать по существу вопроса — убедительно прошу больше сюда не писать.

спустя 11 часов [обр] Eugene Efremov(0/68)[досье]

Уфф... Кажется, нашел что-то более-менее подходящее. 449 Retry With. Введено микрософтом, используется, насколько я понял, примерно для тех же целей, что и у меня.

Надо будет еще проверить, как на него IE реагирует. Если не делает каких-нибудь явных глупостей — значит можно юзать.

P.S. Нет худа без добра. За время поиска решения собрал весьма обширную коллекцию разных HTTP statuscodes. Надо будет ее выложить в местную базу знаний, не знаю только, в какой раздел...

спустя 10 часов [обр] Eugene Efremov(0/68)[досье]
Проверил. Плохо реагирует. В бесконечный цикл валится. Так что это юзать нельзя. Буду смотреть другие варианты.
Powered by POEM™ Engine Copyright © 2002-2005