从源“https://test2”获取“https://test1”的访问已被 CORS 策略阻止

问题描述 投票:0回答:1

我已将 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();
        }
    }
}

然而到目前为止,我还没有想出解决办法。我真的希望有人能帮助我。

亲切的问候

c# asp.net-core cors blazor blazor-server-side
1个回答
0
投票

你失踪了

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();
© www.soinside.com 2019 - 2024. All rights reserved.