Установка кода статуса ответа вручную

У меня есть блок try catch для обработки ошибки, которую я получаю в своем приложении. Мне нужен простой способ настроить ответ на код состояния 403 или запрещенный, а затем либо перенаправить пользователя на страницу входа в систему, либо на пользовательскую страницу ошибки.

У меня возникла проблема с установкой кода состояния и перенаправлением. У кого-нибудь есть пример установки кода состояния и последующего перенаправления?


person JPJedi    schedule 24.03.2009    source источник


Ответы (2)


Response.Status = "403 Forbidden";
Response.Addheader("Location", "http://stackoverflow.com/");

Это в C#, но концепция должна быть примерно такой же в большинстве языков.

person Brandon    schedule 24.03.2009
comment
Когда я пытаюсь запустить его локально, я получаю следующее: Для этой операции требуется режим интегрированного конвейера IIS. - person JPJedi; 24.03.2009
comment
Вы используете Response.Headers.Add или Response.AddHeader? Вы также можете попробовать изменить его на Context.Response.AddHeader. - person Brandon; 24.03.2009
comment
Должен ли я закрыть запрос, когда он перенаправляет на страницу входа? - person JPJedi; 24.03.2009
comment
Я не думаю, что вам нужно, он должен обрабатывать это автоматически. - person Brandon; 24.03.2009
comment
Проблема сейчас в том. В блоке catch я перенаправляюсь, но код продолжает работать за пределами блока catch. Поэтому я пытаюсь остановить/очистить ответ, как только перенаправлю его. Я надеюсь, что в этом есть смысл. Большое спасибо за помощь. - person JPJedi; 24.03.2009
comment
Если вы не хотите, чтобы код запускался, почему бы не добавить оператор return после установки заголовка? - person Brandon; 24.03.2009

Дубликат: Каким должен быть ответ HTTP, если ресурс запрещен, но есть альтернативный ресурс?

Отправка заголовка местоположения предназначена только для 3xx (перенаправление ) или 201 Созданные ответы. Хотя это может работать с большинством клиентов, ИМХО не так, как был разработан HTTP.

Если вы действительно заботитесь о правильных кодах состояния и следовании спецификации HTTP, почему бы вам не ответить 303 See Other или использовать HTTP-аутентификация.

person lispmachine    schedule 01.06.2009