web.config 中的 <cors> 标签和自定义 Header 的 httpProtocol 有区别吗?

Is there a difference between the <cors> tag in web.config and this httpProtocol with Custom Header?

目前在 ASP.NET 核心 MVC 应用程序中,我正在向站点添加以下 web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <cors enabled="true">
            <add origin="*" />
        </cors>
    </system.webServer>
</configuration>

但我收到反馈,有些客户需要用以下内容替换我的 cors 标签:

        <httpProtocol>
            <customHeaders>
                <add name="Access-Control-Allow-Origin" value="*" />
            </customHeaders>
        </httpProtocol>

我想知道它们在功能上有哪些不同?在我看来,他们似乎会得到相同的结果,但在实践中似乎并非如此。

编辑:我想知道问题是不是其中一些服务器缺少 IIS Cors 模块。阅读 MSDN Documentation for the cors tag 它似乎等同于第二个选项,因为每个都写了。

对于最简单的情况,这两种方法是等效的,但在复杂的情况下,它们会产生完全不同的结果,尤其是当您的网络应用受到 Windows 身份验证保护时。

<cors> 作为 IIS CORS 模块的一部分,您可以在这种情况下进行配置,而如果您选择自定义响应 headers,您将完全依靠自己。