Можно ли отправить 401 Неавторизованный И перенаправить (с Местоположение)?

Я хотел бы отправить 401 Неавторизованный И перенаправить клиента куда-нибудь. Однако:

, если я сделаю это так:

header('HTTP/1.1 401 Unauthorized');
header('Location: /');

сервер отправит 302 Найдено с Location , а не 401 Unauthorized .

Если я сделаю это так:

header('Location: /');
header('HTTP/1.1 401 Unauthorized');

браузер получит как 401 Unauthorized , так и Location , но не перенаправит.

(IE 9 и Chrome 16 ведут себя одинаково, поэтому я предполагаю, что это правильно)

Может быть, я неправильно использую HTTP? Я бы хотел, чтобы интерфейс моего приложения был одинаковым для всех клиентов: текстовый браузер, современный браузер, вызовы API и т. Д. Текст ответа 401 + сообщал бы пользователю API, что к чему. Перенаправление полезно для браузера.

Есть ли (хороший) способ?

35
задан Rudie 19 March 2013 в 17:50
поделиться