Я пытаюсь ограничить использование определенных HTTP-глаголов на своем сайте. Я ввел следующее в свой файл конфигурации VirtualHost в элементе Directory:
<Limit GET POST HEAD>
Allow from all
</Limit>
<Limit PUT DELETE OPTIONS>
Deny from all
</Limit>
Казалось, это сработало, но с неожиданными результатами:
Я выполнил следующие команды telnet / HTTP до и после этого изменения,
open server 80
OPTIONS server/abs_path HTTP/1.1
User-Agent: Telnet/1.0
Host: server
перед изменением я получил успешный ответ с заголовками Allowed.
Однако после изменения я ожидал получить ответ 405 «Метод запрещен», но скорее я получил ответ 403 «Доступ запрещен».
Что мне нужно изменить в apache, чтобы вернуть ответ HTTP 405?
Большое спасибо
После трех часов просмотра документации и тестирования apache я обнаружил, что могу использовать mod_rewrite для правильного ответа на нежелательные методы HTTP:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} !=GET
RewriteCond %{REQUEST_METHOD} !=POST
RewriteRule .* /error/405.html [R=405,L]