Я пытаюсь ограничить заголовки запроса виртуального хоста только 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, а использование Limit/LimitExcept не рекомендуется в версии 2.4. Убедитесь, что вы загрузили модуль и в соответствующем виртуальном хосте добавьте это:
# documentroot dir in virtualhost
<Directory /path/to/dir>
AllowMethods GET HEAD POST
Require valid-user
</Directory>
Вы также можете сделать его глобальным, определив его ранее в конфигурации сервера для всего, как я описал ниже.
***обратите внимание, что это / в вашей файловой системе, поэтому вам следует запретить доступ здесь и разрешить доступ в определенных каталогах, таких как documentroot или псевдонимы, впоследствии, но методы allowmethods распространяются и дальше, если вы не переопределите их позже.
<Directory />
Require all denied
AllowMethods GET HEAD POST
</Directory>