c# - 如何使用 CORS 启用自定义 header ?

标签 c# asp.net-web-api cors

我正在尝试按照 Microsoft 的指南在我的 C# Web API 上设置 CORS,该指南可以在 here 找到。 。以下是我遵循的步骤。

  1. 安装 CORS。

Cors is installed

  • 在 WebApiConfig 类中启用 CORS。
  • Cors Enabled

  • 在 Controller 内为给定端点启用 CORS。
  • CORS on Controller

    现在应该注意的是,此端点确实需要自定义 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/

    相关文章:

    javascript - User.Identity.Name 在 Safari 浏览器上为空

    c# - MVC 5 WebAPI - 下载文件 - HttpException

    angularjs - 添加 Stormpath Angular SDK 后出现 CORS 问题

    javascript - 尝试使用 JS (Angular) 跨站点 JSON 请求 API

    c# - 当您将 Int32 设置为等于 Int16 时,幕后会发生什么?

    c# - 计时器说它已启用,但从不执行

    c# - unity拖放,拖到其他UI元素后面

    c# - 更新面板的性质

    c# - 来自 Windows 窗体的 MVC WebAPI 身份验证

    javascript - 访问控制不接受 Angular $resource 调用 Safari 允许与 Chrome 接受