400 Bad Request

Духовность™

Продвинутый новичок
Я хочу отдавать на запроосы, не содержащие необходимое кол-во параметров, 400 Bad Request. Модель поведения моего приложения такова: при ошибочной ситтуации делается header location:

PHP:
if (empty($this->getRequest()->getRequest()->id))
{
 	return $this->createNotification()
 	->setType('alert')
 	->setMessage('все плохо')
 	->setNotificationUrl('/admin/users.html') // куда отправляем при ошибке
	// хочу добавить
	// ->setHeader(400)
 	->run();
}
В данном примере при отсутствии в GET параметра id я делаею location на /admin/users.html
Я не пойму, а правильно ли вообще отдавать в моем случае 400 Bad Request при location на /admin/users.html, т.е. на страницу, которая не была изначально запрошена и по факту является не 400
 

Lirik

Новичок
Духовность™
Можно просто сделать несколько шаблонов для распространенных ошибок и отображать их, а не кидать на другие страницы сайта
 

С.

Продвинутый новичок
Формально нет ничего неправильного в таком поведении. Проблема может только возникнут с поисковиками -- страницу /admin/users.html выкинут из индекса (если конечно паук доберется до нее).
 

iceman

говнокодер
Духовность™
где в запросе синтаксическая ошибка? ты же делаешь редерект, это уже код 3.x.x, разве не так?
делай редирект и выводи сообщение почему тебя сюда перебросила в виде alert блока наверху
 

Духовность™

Продвинутый новичок
400-ый для одминки - более чем странно
не суть важно, что это за страница

Духовность™
где в запросе синтаксическая ошибка?
в запросе /page?id=non_int неправильный ID - не числовой
если бы я не делал location, я бы с чистой совестью указал 400 Bad Request
но я делаю location на наиболее близкий по смыслу документ....

Духовность™
ты же делаешь редерект, это уже код 3.x.x, разве не так?
они бессмысленны для моего случая: http://ru.wikipedia.org/wiki/Список_кодов_состояния_HTTP#3xx
 

fixxxer

К.О.
Партнер клуба
1. Покажи-ка мне, где в RFC 2616 написано, что Location можно использовать с кодами ответа, отличными от 30x и 201.

2. Если ты делаешь редирект, то 302 Found по смыслу подходит. И вообще пользователю вобщем то насрать какой там код. Если хочется показать, что пользователь ввел херню, ну так покажи 404-ю со ссылками "возможно, вы имели в виду".

3. Касаемо 302 всем давно насрать что написано в RFC :). По RFC 302-й редирект со страницы, запрошенной POST-ом, должен повторять POST по указанному Location, например - nobody cares. И смысл его давно фактически иной - редирект, используемый во всех случаях, кроме явного указания на смену постоянного адреса запрашиваемого контента на иной.
 

Духовность™

Продвинутый новичок
Так какой заголовок ставить? Запрошенный документ временно доступен по другому URI - 302 Found (Найдено)? Как ПС тогда будут ошибочные страницы индексировать? Мержить их с теми, куда идет location?
 

fixxxer

К.О.
Партнер клуба
По идее да.
Если хочется, чтобы вообще не индексировал, в принципе есть заголовок X-Robots-Tag. Правда, не уверен, что его все понимают. Ну или, опять же, 404 и ссылки.

Хотя если вся заморочка только ради поисковиков и кривых ссылок, - я бы сунул 301 и не парился со смыслом.
 

iceman

говнокодер
Духовность™
если ты такой умный и тычешь пальцами, то чо спрашиваешь тогда.

отсылай 404, ты редирект делаешь то для юзера на страницу заглушки, а не на "верную" страничку. роботу будет пофигу уже на твой Локейшен.

ps по-моему тебя интересует только мнение фиксера, фишера и амди, пиши им в личку им тогда, фигли
 

untied

Сдвинутый новичок
Что мешает выдать код "400 Bad request" и страничку с ссылками на документы? (т.е. решение fixxxer-а, но 400 код вместо 404-го -- по смыслу 400 больше подходит, поскольку документ найден, но входные параметры неверные).
Редирект с кодом 400 -- не есть гуд. Плюс поисковики не любят код 302 (почему-то).
 
Сверху