我正试图限制在我的网站上使用某些HTTP动词。 我在Directory元素的VirtualHostconfiguration文件中input了以下内容:
<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
在更改之前,我收到了“允许”标题的成功响应。
但是,在改变之后,我预计会收到405个“不允许的方法”回应,但是我收到了403个“禁止访问”回复。
我需要改变在Apache返回405 HTTP响应?
非常感谢
经过三个小时的审查apache文档和testing,我发现我可以使用mod_rewrite正确地响应不需要的HTTP方法:
RewriteEngine On RewriteCond %{REQUEST_METHOD} !=GET RewriteCond %{REQUEST_METHOD} !=POST RewriteRule .* /error/405.html [R=405,L]