我注意到在我的IIS(7.5)日志中奇怪的日志条目(除非有什么我不明白)。
这是一个在线字典与请求(用户友好的url重写),其中大部分是GET。 然而,我注意到一个正在尝试抓取我们的内容(成千上万的这样的请求)正在发生的怪异的POST请求,
2013-11-09 20:39:27 GET /dict/mylang/word1 - yyyy Mozilla/5.0+(compatible;+Googlebot/2.1;++http://www.google.com/bot.html) - 200 296 2013-11-09 20:39:29 GET /dict/mylang/word2 - zzzz Mozilla/5.0+(iPhone;+CPU+iPhone+OS+6_0+like+Mac+OS+X)+AppleWebKit/536.26+(KHTML,+like+Gecko)+Version/6.0+Mobile/10A5376e+Safari/8536.25+(compatible;+Googlebot-Mobile/2.1;++http://www.google.com/bot.html) - 200 468 2013-11-09 20:39:29 POST /dict/mylang/word3 - xxxx - - 200 2593
两个第一个请求是合法的。 现在对于第三个请求,我不认为我已经允许跨域POST。 如果那第三条日志线意味着什么。
所有这些POST请求花了很多时间给我不明原因。 我想知道这些POST请求是如何可能的,我怎样才能阻止它们。
ps我故意掩饰了IPs。
任何帮助,将不胜感激! 先谢谢你。
我不确定你的意思是“跨域邮政”。 另外,日志中的post不一定是AJAX请求。
默认情况下,可以使用各种http动词来请求您网站上的资源。 仅仅因为GET最常用,所以当请求资源时,没有任何东西阻止客户端使用POST。 这就是你在日志中看到的。
假设您使用的是现代IIS(7+),您可以指定在站点,目录或文件基础上允许哪些动词。
你说的是你正在使用某种路由,所以你可能没有目录或文件,你仍然可以设置允许的动词,在你的web.config文件中添加类似下面的configuration根目录:
<location path="dict/mylang"> <system.webServer> <security> <requestFiltering> <verbs> <add verb="POST" allowed="false" /> </verbs> </requestFiltering> </security> </system.webServer>
在位置节点中,您告诉IIS只需将其应用于特定的URL,那么您只需说,不要在这里允许任何POST请求。 这在IIS GUI中是不可能的。
你的日志文件中仍然会有条目,但是它们将是404的子状态(Verb denied),他们不应该花那么长时间。