限制 Apache2 上的 HTTP 动词

限制 Apache2 上的 HTTP 动词

我正在尝试限制在我的网站上使用某些 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 中做哪些更改才能返回 405 HTTP 响应?

非常感谢

答案1

经过三个小时的查看 apache 文档和测试后,我发现我可以使用 mod_rewrite 正确响应不需要的 HTTP 方法:

RewriteEngine On
RewriteCond %{REQUEST_METHOD} !=GET
RewriteCond %{REQUEST_METHOD} !=POST 
RewriteRule .* /error/405.html [R=405,L] 

相关内容