我为一些工作部门运行了一个小型webapp,流量非常低,并且没有那么多用户。它建立在Django之上,并使用apache作为Web服务器。 我有一些东西配置为在发生任何错误时给我发电子邮件,直到昨天这是一件好事 - 没有太多错误,但有时用户在遇到问题时不会说话,所以它让我能够保持最佳状态
昨天我们有了一个新用户,我开始收到大量的错误电子邮件。他不知道出了什么问题,所以我认为这是幕后的事情。当我查看日志时,它们是使用“Microsoft数据访问Internet发布提供程序协议”和“Microsoft Office协议发现”的HTTP OPTIONS请求。直到那时我才听说过这个,但它似乎是某种MS web文件夹/ webDAV的东西。
一个选择是弄清楚他怎么能把它关闭并告诉他停止这样做,但我宁愿只是把头砍掉,做一些像apache只是没有把那些请求传递给Django那里一种可以处理的方法吗?
答案 0 :(得分:2)
重写选项很好,'Apache Way'可能更像:
<LimitExcept GET POST>
deny from all
</LimitExcept>
...或
<Limit OPTIONS>
deny from all
</Limit>
答案 1 :(得分:2)
我找到了一个由不同框架使用并移植到Django的解决方案。我把它放在生成带有.XLS或.DOC文件链接的HTML的任何视图的顶部:
if request.method == 'OPTIONS':
response = HttpResponse()
response['Allow'] = 'GET, HEAD, POST'
return response
我更喜欢Apache解决方案......假设它不会在Windows方面造成问题。
答案 2 :(得分:1)
怎么样:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^OPTION
RewriteRule .* - [F]
(启用mod_rewrite。)