【发布时间】:2018-05-25 10:42:22
【问题描述】:
首先让我说我了解 CORS 的概念以及它的工作原理,但我有一个非常具体的问题,即它是如何在 Microsoft 的 Web API 中实现的。我在 Global.ascx.cs 文件中配置了 CORS,如下所示:
var cors = new EnableCorsAttribute("https://example.com", "*", "*");
config.EnableCors(cors);
现在,当我在 Web api 中请求带有标头 Origin: https://example.com 的资源时,我收到一个包含标头 Access-Control-Allow-Origin: https://example.com 的响应,这是预期的。但是,当我请求具有不同 Origin 值或完全没有该标头的相同资源时,来自服务器的响应没有 Access-Control-Allow-Origin 标头。
这是想要的结果吗?或者服务器是否应该始终使用 Access-Control-Allow-Origin 标头进行响应?
我问是因为我们已经让 Veracode 扫描了我们的代码库,他们说响应应该始终包含标题 Access-Control-Allow-Origin: https://example.com。据我了解,浏览器仍然会抛出No 'Access-Control-Allow-Origin' header is present on the requested resource,无论标头是否存在不同的来源或标头根本不存在(我认为不披露允许的域将是首选解决方案)。
另外,我知道我可以通过将其添加到我的 web.config 来使标题始终显示:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="https://example.com" />
</customHeaders>
</httpProtocol>
</system.webServer>
但我真的只是想知道正确的实现是什么。
【问题讨论】:
标签: c# asp.net asp.net-web-api cors