CORS 需要 3 个标头才能正常工作。
记住 CORS 工作原理的重要资源是 The MDN Documentation。
您包含的标头将允许所有来源发出请求。但没有指定允许他们提出哪些请求,因此,所有请求都被阻止。
要允许所有来源发出特定请求,您需要包含 Access-Control-Allow-Methods 标头,它告诉浏览器 Web 服务器在该端点上允许哪些请求。
根据您的请求的形成方式,您可能还需要包含 Access-Control-Allow-Headers 标头,它告诉浏览器允许将哪些标头发送到该端点上的 Web 服务器。
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: Content-Type
Access-Control-Max-Age: 86400
使用所有这些,您的 web.config 的正确配置将是:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*"/>
<add name="Access-Control-Allow-Methods" value="GET,POST,OPTIONS"/>
<add name="Access-Control-Allow-Headers" value="Content-Type"/>
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
这将允许您使用 POST 或 GET 访问该端点。
出于性能原因,Access-Control-Max-Age 标头会告诉您的浏览器将这些结果缓存那么多秒。
另外,请确保不要在您可能正在运行的任何生产系统中包含此配置。
最好为每个可能需要它的操作/控制器显式启用 CORS。