保护Web API免受跨源请求的影响

时间:2015-01-14 22:52:25

标签: c# asp.net iis cors

我注意到最近有一些流量点击了我的一个API端点,而这些端点并没有加起来。在查看IIS日志之后,我确定它是在亚马逊ec2上运行的机器人,并且我希望以这种方式抓取数据。

我在这里有点困惑,因为在我的应用程序中我没有启用CORS(我甚至没有安装软件包)。使用PostMan调用违规的API端点我得到以下标题:

Cache-Control → no-cache
Content-Encoding → gzip
Content-Length → 357
Content-Type → application/json; charset=utf-8
Date → Wed, 14 Jan 2015 22:29:24 GMT
Expires → -1
Pragma → no-cache
Server → Microsoft-IIS/8.5
Vary → Accept-Encoding
X-AspNet-Version → 4.0.30319
X-Powered-By → ASP.NET

根本没有Access-Control-Allow-Origin标头。

由于我的前端应用程序(此时应该是API的唯一消费者)是从与API本身相同的域提供的,因此我宁愿仅限制对该域的访问。我错过了一些明显的东西吗?或者我是否需要安装CORS包并使用[DisableCors]明确标记我的API。

1 个答案:

答案 0 :(得分:2)

除非我误解你的问题:

  • CORS适用于脚本(XMLHTTPRequest)访问来源。

如果“bot”以其他方式向您的端点/ API资源发出请求,例如从浏览器或服务器端调用GET,然后它不是CORs。

实际上,您的API实际上仍然会响应脚本请求,它是客户端(浏览器),它会查找标头并确定要执行的操作。

ASP.Net/web.config中的设置控制Response是否包含Access-Control-Allow-Origin标题(接收浏览器/客户端评估)。

... H个