【发布时间】:2021-12-03 22:10:25
【问题描述】:
我正在尝试按照 Microsoft 的指南在我的 C# Web API 上设置 CORS,该指南位于 here。以下是我遵循的步骤。
- 安装 CORS。
- 在 WebApiConfig 类中启用 CORS。
- 在控制器中为给定端点启用 CORS。
现在应该注意的是,此端点确实需要自定义标头。我目前的理解是,当我使用 EnableCors 属性并为标题使用通配符“*”时,所有标题都是允许的。但是,当我尝试调用此端点时,我在 Chrome 开发工具中遇到了以下错误。
从源“http://localhost:12345”访问“https://myapi/getdata/myid”处的 XMLHttpRequest 已被 CORS 策略阻止:访问控制不允许请求标头字段 myheaderfield - 预检响应中的允许标头。
我尝试将允许的标头从通配符“*”更改为“myheaderfield”,但错误仍然相同。如何使用 CORS 启用自定义标头?
以下是我用来进行此调用的 JS XHR 请求。
var xhr = new XMLHttpRequest();
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://myapi/getdata/myid");
xhr.setRequestHeader("myheaderfield", "abc123");
xhr.send();
【问题讨论】:
-
对于 .Net 5/ASP.Net Core,请尝试以下 abdulraheem alarpi 的 suggestion。对于一般带有 CORS 的客户标头,请看这里:developer.mozilla.org/en-US/docs/Web/HTTP/Headers/…
-
我觉得你可以试试myapi/getdata/?id=myid在调用JS的时候
标签: c# asp.net-web-api cors