Что делает заголовок («HTTP/1.0 401 Unauthorized»)?

В книге Веллинга и Томсона напишите следующий код

if (($_SERVER['PHP_AUTH_USER'] != 'user') ||
($_SERVER['PHP_AUTH_PW'] != 'pass')) {
// visitor has not yet given details, or their
// name and password combination are not correct
header('WWW-Authenticate: Basic realm="Realm-Name"');
header('HTTP/1.0 401 Unauthorized');
echo "<h1>Go Away!</h1>
<p>You are not authorized to view this resource.</p>";
} else {
// visitor has provided correct details
echo "<h1>Here it is!</h1>
<p>I bet you are glad you can see this secret page.</p>";
}

Что делает заголовок («HTTP/1.0 401 Unauthorized»)? Я удаляю эту строку, и скрипт работает правильно.

Почему этот код работал без этой строки?


person Daniyal    schedule 15.02.2015    source источник
comment
Он должен установить код состояния. Использование головки HTTP/1.0 неправильно для большинства установок. Должно быть Status: нормально. -- Ваша оценка, что после удаления все заработало правильно, кажется маловероятной.   -  person mario    schedule 15.02.2015
comment
Этот код работает правильно на моем сервере... что, по вашему мнению, не работает должным образом?   -  person CragMonkey    schedule 15.02.2015
comment
@Cragmonkey Я хочу знать, почему этот код работал без этой строки? Спасибо за внимание.   -  person Daniyal    schedule 15.02.2015


Ответы (3)


Заголовок HTTP 401 сообщает вашему браузеру, что вы не авторизован для просмотра этой страницы, что было бы ожидаемой ситуацией, если бы вы попытались получить доступ к защищенному ресурсу, не входя в систему.

Примечание. ВСЕГДА добавляйте die(); или exit; после отправки такого заголовка, поскольку боты не обязательно подчиняются инструкциям заголовка, и вы хотите завершить сценарий до того, как они увидят защищенный контент. Особенно это касается редиректов.

person CragMonkey    schedule 15.02.2015

Эта команда отправляет HTTP header HTTP/1.0 401 Unauthorized, который сообщает браузеру, что ему нужно запросить username или password для просмотра страницы.

person Rohit Jindal    schedule 15.02.2015
comment
Не могли бы вы сказать мне, почему этот код работал без этой строки? Спасибо за Ваш ответ. - person Daniyal; 15.02.2015

header("HTTP/1.0 401 Unauthorized"); отправляет на сервер код состояния 401 неавторизованного доступа, сообщая, что вам не разрешено просматривать страницу. Используйте die или exit вместо echo, чтобы остановить выполнение другого кода.

person Joshua    schedule 09.08.2017