ASP.NET Core CORS 配置不适用于 Firefox

Posted

技术标签:

【中文标题】ASP.NET Core CORS 配置不适用于 Firefox【英文标题】:ASP.NET Core CORS configuration not working for Firefox 【发布时间】:2019-12-23 21:30:40 【问题描述】:

我的 ASP.NET Core (dotnet SDK 3) 应用程序具有以下 CORS 配置。我观察到这种配置非常适用于 Google Chrome(版本 76.0.3809.100 64 位)。 Mozilla Firefox Developer Edition(69.0b14 64 位版本)的响应标头中缺少 Access-Control-Allow-Origin。事实上,没有任何回应。有什么解决办法吗?

public void ConfigureServices(IServiceCollection services)

    services.AddControllers()
        .AddNewtonsoftJson();

    services.AddCors();


public void Configure(IApplicationBuilder app, IWebHostEnvironment env)

    if (env.IsDevelopment())
    
        app.UseDeveloperExceptionPage();
    
    else
    
        // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
        app.UseHsts();
    

    app.UseCors(builder => 
        builder.AllowAnyOrigin()
            .AllowAnyMethod()
            .AllowAnyHeader()
    );

    app.UseHttpsRedirection();
    app.UseRouting();
    app.UseAuthorization();
    app.UseEndpoints(endpoints =>
    
        endpoints.MapControllers();
    );

【问题讨论】:

【参考方案1】:

我发现了这个问题,这是一个非常奇怪的问题。我正在阅读一篇关于 CORS 和 ASP.NET Core 的旧博客。然后我偶然发现了this comment,它说该解决方案适用于 Kestrel,但不适用于 IIS Express。因此,我将构建配置更改为不使用 IIS Express,它现在可以在两种浏览器中完美运行。如果您希望这适用于 IIS Express,则无需编辑 Startup.cs,而是编辑可能位于项目根文件夹中的 application.config 文件。

【讨论】:

您是否在 IIS Express 设置中启用了 Windows 身份验证?如果是这样,则在没有身份验证的情况下执行 OPTION 调用,因此您应该允许该站点或该特定调用的匿名访问 身份验证未启用。

以上是关于ASP.NET Core CORS 配置不适用于 Firefox的主要内容,如果未能解决你的问题,请参考以下文章

CORS 不适用于 ASP NET 5 Web Api

ASP.NET Core Authorize 属性不适用于 JWT

asp.net core 2.1,Include() 函数不适用于 db first 方法

模型绑定不适用于 ASP.NET Core 2 WebAPI 中的 POST 请求

IdentityServer3 注销功能不适用于 ASP.NET Core 客户端

即使在配置 ASP.NET Core Web API 中启用了 CORS,CORS 也会阻止发布请求