保护 Web API 免受 Cross-Origin 请求

Protect Web API from Cross-Origin requests

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

我在这里有点困惑,因为我在我的应用程序中没有任何地方启用 CORS(我什至没有安装包)。使用 PostMan 调用有问题的 API 端点,我得到以下 headers 返回:

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 header。

因为我的前端应用程序(此时应该是 API 的唯一消费者)是从与 API 本身相同的域提供服务的,所以我希望限制对该域专有。我在这里遗漏了一些明显的东西吗?或者我是否需要以某种方式安装 CORS 包并用 [DisableCors].

明确标记我的 API

除非我误解了你的问题:

  • CORS 用于 script (XMLHTTPRequest) 访问来源。

如果 "bot" 以其他方式向您的 endpoint/API 资源发出请求,例如从浏览器获取,或 server-side 调用,那么它不是 COR 问题。

实际上,您的 API 实际上仍会响应脚本请求,它是 客户端 (浏览器)寻找 header 并确定该怎么办。

ASP.Net/web.config 中的设置控制 Response 是否包含 Access-Control-Allow-Origin header(接收 browser/client 评估)。

第...