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的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core Authorize 属性不适用于 JWT
asp.net core 2.1,Include() 函数不适用于 db first 方法
模型绑定不适用于 ASP.NET Core 2 WebAPI 中的 POST 请求