2012-12-04 2 views
0

PHP에서 사용자 정의 값이 "Application"인 401 헤더와 WWW-Authenticate 헤더를 발행하고 있습니다. 사용자 정의 값은 WWW-Authenticate 헤더가 "Basic"으로 설정된 경우와 같이 브라우저가 Apache 권한 팝업 창을로드하지 못하도록합니다. 응용 프로그램이 인증을 처리 할 때 내 응용 프로그램에 필요한 동작입니다. 이것은 모두 잘 작동하며 401 상태 코드의 의도를 따르는 것으로 보이는데 403 헤더를 발행하는 것보다 낫습니다.Apache Auth 구성 설정이 PHP에서 발급 한 인증 헤더를 대체합니다.

Apache config.The 401 헤더에 이미 Apache auth 설정이있는 서버에서이 문제를 실행하면 Apache가 WWW-Authenticate 헤더가 아닌 Apache 구성에 표시된 WWW-Authenticate 메소드를 보내 게됩니다. PHP에서 발급되었습니다. 따라서 응답 헤더는 "응용 프로그램"이 아니라 "응용 프로그램"이 아니라 "기본"으로 설정됩니다. 무한한 권한 부여 루프가 발생하고 Apache auth 팝업이 계속 나타나게됩니다.

내 솔루션 지금은 그냥 403 헤더를 발행하지만, 그렇게 할 권리가없는 것 같습니다. A 403은 사용자가 인증하더라도 요청이 승인되지 않음을 나타냅니다.

응용 프로그램 수준 로그인에 401 헤더를 사용하면 안됩니까? 그것은 단지 HTTP 인증을위한 것 같습니다. 그렇지 않다면 403이 정말로 적절한가? 나는 그 곳 곳곳을 둘러 보았고 결정적인 표준을 찾을 수 없습니다.

+0

내 응용 프로그램에 http 프로토콜 용으로 작성된 상태 코드를 적용하려고하는데 정확히 번역되지 않은 것 같습니다. 거기에 유효한 http 상태 코드가있는 것 같지 않습니다. 나는 HTTP 프로토콜에 관한 한 403이 맞을 수도 있다고 생각한다. "당신이 계속이 같은 요청을 계속해서하는 한, 나는 그것을 부인할 것입니다.". HTTP는 상태 비 저장이며 내 응용 프로그램의 로그인 구성에 대해 아무것도 모릅니다. – kirkmadera

답변

0

unset an Apache header (PHP에서 헤더 설정과 다르게 작동)이 있습니다.

그래서 PHP 파일의 헤더를 제거하기 위해 .htaccess를 추가 할 수 있습니다.

<FilesMatch "\.(php)$"> 
Header unset WWW-Authenticate 
</FilesMatch> 
관련 문제