.NET 5 对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头
Posted
技术标签:
【中文标题】.NET 5 对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头【英文标题】:.NET 5 Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource 【发布时间】:2021-05-28 09:29:52 【问题描述】:我目前正在尝试在 .NET Core 5 API 上启用 CORS。非预检,跨域请求工作正常;但是,所有OPTIONS
请求都会导致上述消息。我的Startup.cs
看起来像这样:
public void ConfigureServices(IServiceCollection services)
services.AddCors(options =>
options.AddPolicy(corsPolicyName, builder =>
builder
.WithOrigins("http://localhost:3000")
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
);
);
...
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
app.UseHttpsRedirection();
app.UseRouting();
app.UseCors(corsPolicyName);
app.UseAuthorization();
app.UseEndpoints(endpoints =>
endpoints.MapControllers();
);
查看了其他几个线程后,我似乎无法弄清楚我的配置有什么问题。任何帮助将不胜感激。
【问题讨论】:
我知道你自己回答了这个问题,但是看看 a) 应该处理请求的控制器和 b) 请求会很有帮助你正在做的。 【参考方案1】:删除:
.AllowCredentials();
并在 UseRouting 和 UseAuthorization 之间移动 app.UseCors(corsPolicyName):
app.UseHttpsRedirection();
app.UseRouting();
app.UseCors(corsPolicyName);
app.UseAuthorization();
【讨论】:
不幸的是,这并没有解决我的问题。谢谢你的建议;我更新了我的示例以反映这一变化。【参考方案2】:在我的 API 上启用匿名身份验证解决了这个问题。 OPTIONS
请求不包含凭据,因此不允许匿名身份验证导致它们被拒绝。
可以通过转到项目的属性>调试>选中“启用匿名身份验证”来启用匿名身份验证。
【讨论】:
以上是关于.NET 5 对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头的主要内容,如果未能解决你的问题,请参考以下文章
对预检请求的响应未通过访问控制检查 - Angular 5 + JWT OAuth
在 ASP.NET 中,对预检请求的响应未通过访问控制检查:没有“Access-Control-Allow-Origin”标头
来自 ASP NET Web API 的 CORS 阻止 Ajax POST 调用 - 对预检请求的响应未通过访问控制检查
React + ASP.Net Core 3:CORS 对预检请求的响应未通过访问控制检查:没有“Access-Control-Allow-Origin”标头