HTTP 401 Unauthorized 오류는 서버가 리소스에 액세스하려면 사용자 인증이 필요함을 의미합니다. 이 오류 메시지는 사용자가 보호된 콘텐츠에 액세스하려고 시도했지만 인증에 실패한 경우 반환됩니다. 이 기사에서는 PHP에서 401 오류가 발생하는 일반적인 원인을 요약하고 해당 솔루션을 제공합니다.
서버가 인증을 설정하지 않으면 사용자는 보호된 리소스에 액세스할 수 없습니다.
인증 유형은 PHP의 header() 함수를 사용하여 설정할 수 있습니다:
header('WWW-Authenticate: Basic realm="My Realm"');사용자가 제공한 사용자 이름이나 비밀번호가 서버에 저장된 정보와 일치하지 않으면 액세스가 실패합니다.
사용자가 제공한 자격 증명이 올바른지 확인하거나 사용자에게 비밀번호를 재설정하도록 안내합니다.
사용자에게 보호된 파일에 대한 액세스 권한이 없는 경우에도 401 오류가 발생할 수 있습니다.
파일 권한이 올바르게 설정되어 있고 사용자에게 적절한 액세스 권한이 있는지 확인하십시오.
Apache 서버에서는 .htaccess 파일을 사용하여 인증을 구성합니다. 이 파일이 디렉터리에 없으면 서버는 인증을 수행할 수 없습니다.
보호된 디렉터리에 .htaccess 파일을 만들고 인증 구성을 추가합니다.
AuthType Basic
AuthName "My Realm"
AuthUserFile /path/to/auth-file
Require valid-user부적절한 서버 구성이나 기술적 문제로 인해 HTTP 401 오류가 발생할 수도 있습니다.
서버 로그에서 관련 오류 메시지를 확인하고 필요한 경우 기술 지원에 문의하세요.
비밀번호로 보호된 파일 secret.txt 를 포함하는 보호된 폴더 private 이 있다고 가정합니다. 인증은 다음 PHP 코드를 사용하여 수행할 수 있습니다.
<!--?php
// 기본 인증 설정
header('WWW-Authenticate: Basic realm="My Realm"');
// 자격 증명 확인
if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {
// 파일에서 사용자 및 비밀번호 읽기
$users = file("users");
$authenticated = false;
foreach ($users as $line) {
list($username, $password) = explode(":", trim($line));
// 제공된 자격 증명을 파일의 자격 증명과 비교합니다.
if ($_SERVER['PHP_AUTH_USER'] == $username && $_SERVER['PHP_AUTH_PW'] == $password) {
$authenticated = true;
break;
}
}
// 사용자가 인증된 경우,그런 다음 액세스를 허용해 주세요
if ($authenticated) {
fopen("private/secret.txt", "r");
} else {
// 확인되지 않음,반환 오류
header('HTTP/1.0 401 Unauthorized');
echo 'Authentication failed.';
}
} else {
// 자격 증명을 사용할 수 없습니다.,인증 필요
header('HTTP/1.0 401 Unauthorized');
echo 'Authorization Required.';
}
?-->위 구성을 통해 보호된 리소스에 대한 액세스를 PHP에서 효과적으로 관리하여 사용자 경험에 영향을 미치는 HTTP 401 무단 오류를 방지할 수 있습니다.