Назад | Перейти на главную страницу

Ограничение HTTP-ГЛАГОЛОВ на Apache2

Я пытаюсь ограничить использование определенных 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]