我已将 Blazor 项目的 API 和 PWA 传输到 Web 服务器,现在出现以下错误: '访问从源'https://test2'获取'访问'https://test1'已被CORS策略阻止:请求的资源上不存在'Access-Control-Allow-Origin'标头。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以在禁用 CORS 的情况下获取资源。'
使用 API 的 POST 端点时总会出现此错误,使用 GET 端点则没有问题。
我已经在 API 的 Program.cs 中尝试了所有可能的方法,我当前的代码如下所示:
namespace Test_API
{
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
var specificOrigins = "AppOrigins";
builder.Services.AddCors(options => {
options.AddPolicy(name: specificOrigins,
policy =>
{
policy.WithOrigins("https://test2")
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials()
.WithExposedHeaders("Content-Disposition")
.WithExposedHeaders("Content-Type");
});
});
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
app.UseHttpsRedirection();
app.UseSwagger();
app.UseSwaggerUI();
app.UseHttpsRedirection();
app.UseCors(specificOrigins);
app.UseAuthorization();
app.MapControllers();
app.Run();
}
}
}
然而到目前为止,我还没有想出解决办法。我真的希望有人能帮助我。
亲切的问候
你失踪了
app.UseRouting();
。正确的顺序应该如下:
对 UseCors 的调用必须放在 UseRouting 之后、UseAuthorization 之前。
var app = builder.Build();
app.UseHttpsRedirection();
app.UseSwagger();
app.UseSwaggerUI();
app.UseHttpsRedirection();
// add this line
app.UseRouting();
app.UseCors(specificOrigins);
app.UseAuthorization();
app.MapControllers();
app.Run();