保护 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 评估)。
第...
我注意到最近有一些流量到达了我的一个 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]
.
除非我误解了你的问题:
- CORS 用于 script (XMLHTTPRequest) 访问来源。
如果 "bot" 以其他方式向您的 endpoint/API 资源发出请求,例如从浏览器获取,或 server-side 调用,那么它不是 COR 问题。
实际上,您的 API 实际上仍会响应脚本请求,它是 客户端 (浏览器)寻找 header 并确定该怎么办。
ASP.Net/web.config 中的设置控制 Response
是否包含 Access-Control-Allow-Origin
header(接收 browser/client 评估)。
第...