Ограничить заголовки запросов 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, а использование 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>

Связанный контент