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>