我有一个托管在 Azure 中的 ASP.NET Core 8.0 Web API。当所有内容都部署到 Azure 时,它可以正常工作。但我们正在尝试在本地运行 Reactjs 前端并访问 Azure 中的 Web API 进行测试和调试。我已遵循有关在 Web 服务上设置 CORS 的所有文档,但不断收到:
从源“http://localhost:3000”获取“https:///api/stats”的访问已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:无“访问控制” -Allow-Origin'标头存在于请求的资源上。如果不透明响应满足您的需求,请将请求模式设置为“no-cors”以在禁用 CORS 的情况下获取资源。
builder.Services.AddCors(options =>
{
options.AddPolicy(MyAllowSpecificOrigins,
policy => {
policy.WithOrigins("http://localhost:3000")
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});
builder.Services
.AddControllers()
.AddJsonOptions(x =>
{
x.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles;
x.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;
});
然后,稍后,在执行 var app = builder.Build() 之后
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseSpaStaticFiles();
app.UseRouting();
app.UseCors(MyAllowSpecificOrigins);
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers()
.RequireCors(MyAllowSpecificOrigins);
});
app.UseSpa(spa =>
{
if (builder.Environment.IsDevelopment())
{
spa.Options.SourcePath = "client-app";
spa.UseReactDevelopmentServer("start");
}
});
我什至尝试将
[EnableCors(MyAllowSpecificOrigins)]
添加到控制器本身。
这是一个非营利组织的开源项目。希望有人知道解决办法。有什么想法吗?
这是
Program.cs
的全部内容:
https://github.com/TrashMob-eco/TrashMob/blob/main/TrashMob/Program.cs
我尝试过改变陈述的顺序,尝试过旧的方法和新的搜索方法,尝试打开所有的起源。似乎没什么作用。