我正在尝试按照 Microsoft 的指南在我的 C# Web API 上设置 CORS,该指南可以在 here 找到。 。以下是我遵循的步骤。
- 安装 CORS。
- 在 WebApiConfig 类中启用 CORS。
- 在 Controller 内为给定端点启用 CORS。
现在应该注意的是,此端点确实需要自定义 header 。我目前的理解是,当我使用 EnableCors 属性并使用通配符“*”作为 header 时,则允许所有 header 。但是,当我尝试调用此端点时,我在 Chrome 开发工具中遇到了以下错误。
Access to XMLHttpRequest at 'https://myapi/getdata/myid' from origin 'http://localhost:12345' has been blocked by CORS policy: Request header field myheaderfield is not allowed by Access-Control-Allow-Headers in preflight response.
我尝试将允许的 header 从通配符“*”更改为“myheaderfield”,但错误仍然存在。如何使用 CORS 启用自定义 header ?
下面是我用来进行此调用的 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();
最佳答案
仅允许 header 访问asp.net core
在ConfigureServices中这样:
services.AddCors(options => options.AddPolicy("name of cors", builder =>
{
builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();
}));
关于c# - 如何使用 CORS 启用自定义 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69589219/