Apache2.4 요청 헤더 제한

Apache2.4 요청 헤더 제한

POST가상 호스트의 요청 헤더를 , HEAD및 로만 제한하려고 합니다 GET. 지금까지 내가 한 일은 .htaccess가상 호스트용을 만들고 다음을 입력한 것입니다.

<LimitExcept GET HEAD POST>
    Require valid-user
</LimitExcept>

문제는 <LimitExcept>이라는 오류가 표시된다는 것 입니다 not allowed here. 그래서 사용해 보았지만 <Limit>동일한 오류가 발생합니다. 또한 가상 호스트 파일 내로 이동하려고 시도했지만 .conf여전히 오류가 발생합니다. 내가 이해하지 못하는 것은 공식 문서에는 허용된다고 나와 있지만 내 서버에서는 그렇지 않다는 것입니다.

답변1

GET, POST 및 HEAD 메소드만 허용하려는 경우에는 정상적으로 작동합니다.

<Directory "/path/to/documentroot">
    Require method GET POST HEAD
</Directory>

VirtualHost 내에 이 구성을 넣어야 합니다.

편집하다: 그리고 주석의 다른 질문(POST 요청에 대해서만 비밀번호 인증을 활성화하는 방법)에 답하려면 다음 지시어(/path/to/your/directory/.htaccess에 넣을 수 있음)를 사용하면 됩니다.

<RequireAny>
     AuthUserFile /path/to/your/.htpasswd
     AuthName "Login"
     AuthType Basic
     Require method GET HEAD
     Require valid-user
</RequireAny>

이렇게 하면 GET 및 HEAD 메서드가 허용되지만 POST 요청은 인증을 트리거합니다.

답변2

2.4에는 이를 위한 mod_allowmethods라는 특정 모듈이 있으며 2.4에서는 Limit/LimitExcept 사용이 권장되지 않습니다. 모듈을 로드하고 적절한 가상 호스트에 다음을 추가했는지 확인하세요.

# documentroot dir in virtualhost
<Directory /path/to/dir>
     AllowMethods GET HEAD POST
     Require valid-user
</Directory>

아래에 설명하는 것처럼 서버 구성 초기에 모든 항목을 정의하여 전역으로 만들 수도 있습니다.

***이것은 파일 시스템의 /이므로 여기에서 액세스를 거부하고 나중에 documentroot 또는 별칭과 같은 특정 디렉터리에 대한 액세스를 허용해야 합니다. 그러나 허용 방법은 나중에 재정의하지 않는 한 더 아래로 전파됩니다.

<Directory />
    Require all denied
    AllowMethods GET HEAD POST
</Directory>

관련 정보