我在Ubuntu 10.04上有一个默认的Apache安装。
我使用下面的Nmap扫描来确定可用的Apache方法:
nmap -p80 --script=http-methods 192.168.1.66
结果是:
http-methods: GET HEAD POST OPTIONS
我试图消除HEAD方法。 所以在/etc/apache2/apache.conf添加了以下内容:
<Directory "/var/www/*"> <LimitExcept GET POST OPTIONS> Deny from all </LimitExcept> ... </Directory>
然后我重新启动了Web服务器。 然而,nmap扫描仍然打印相同的结果。
有谁知道我在这里错过了什么?
<Limit>的文档明确指出:
If GET is used it will also restrict HEAD requests
这非常强烈地暗示出于<Limit>和<LimitExcept>的目的, GET和HEAD被视为相同。 适用于GET限制将适用于HEAD ,因此如果GET不受限制,则HEAD也将不受限制。
此外, HTTP/1.1 RFC 2616明确指出(9.4节):
The HEAD method is identical to GET except that the server MUST NOT return a message-body in the response.
进一步明确GET和HEAD之间的直接关系。
最后一条信息来澄清这一点,也从RFC 2616 ,(5.1.1):
The methods GET and HEAD MUST be supported by all general-purpose servers.
这些信息一起往往强烈暗示,你想完成的将不可能通过单独的configuration更改。