ASP.Net Core3和Angular9 CORS

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

我想将Post方法与UI一起用于控制器。相反,我收到此错误:从源“ https://localhost:44380/Register”对“ http://localhost:4200”处的XMLHttpRequest的访问已被CORS策略阻止:对预检请求的响应未通过访问控制检查:要求的资源。

我使用:

services.AddCors(options =>
        {
            options.AddPolicy("AllowSpecificOrigin",
                                        builder =>
         builder.AllowAnyOrigin()
                .AllowAnyMethod()
                .AllowAnyHeader());
        });

app.UseCors("AllowSpecificOrigin");

在控制器上,我使用注释

[EnableCors("AllowSpecificOrigin")]

在Angular上添加了poxy.conf.json并带有:

{
  "/server": {
    "target": "https://localhost:44380",
    "secure": false,
    "changeOrigin": true,
    "logLevel": "debug",
    "pathRewrite": {
      "^/api": ""
    }
  }
}

我尝试了许多不同的解决方案,但没有帮助((((

asp.net angular cors core angular9
2个回答
0
投票

完整启动:

public class Startup
{
    private IConfigurationRoot _confString;
    public Startup(IHostEnvironment hostEnvironment)
    {
        _confString = new ConfigurationBuilder().SetBasePath(hostEnvironment.ContentRootPath).AddJsonFile("appsettings.json").Build();
    }
    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
        services.AddControllers();
        services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());
        services.AddTransient<IUnitOfWork, UnitOfWork>();
        services.AddTransient<IConnectionFactory, ConnectionFactory>();
        services.AddDbContext<ApplicationContext>(options => options
                .UseSqlServer(_confString.GetConnectionString("DefaultConnection")
          ));
        services.AddIdentity<User, Role>(options =>
        {
            options.User.RequireUniqueEmail = true;
        }).AddEntityFrameworkStores<ApplicationContext>();

        services.Configure<IdentityOptions>(options =>
        {
            options.Password.RequireDigit = false;
            options.Password.RequireNonAlphanumeric = false;
            options.Password.RequireLowercase = false;
            options.Password.RequireUppercase = false;
        });

        services.AddTransient<IClientRepository, ClientRepository>();
        services.AddTransient<ICategoryRepository, CategoryRepository>();
        services.AddTransient<IOrderRepository, OrderRepository>();
        services.AddTransient<IWorkerRepository, WorkerRepository>();
        services.AddTransient<IWorkerCategoryRepository, WorkerCategoryRepository>();

        services.AddTransient<IClientService, ClientService>();
        services.AddTransient<ICategoryService, CategoryService>();
        services.AddTransient<IOrderService, OrderService>();
        services.AddTransient<IWorkerService, WorkerService>();
        services.AddTransient<IWorkerCategoryService, WorkerCategoryService>();

        services.AddValidatorsFromAssembly(typeof(Startup).Assembly);

        services.AddSwaggerGen(c =>
        {
            c.SwaggerDoc("v1", new OpenApiInfo
            {
                Version = "v1",
                Title = "Test API",
                Description = "ASP.NET Core Web API"
            });
        });

        services.AddCors(options =>
        {
            options.AddPolicy("AllowSpecificOrigin",
                                        builder =>
         builder.AllowAnyOrigin()
                .AllowAnyMethod()
                .AllowAnyHeader());
        });   
    }
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        app.UseHttpsRedirection();
        app.UseRouting();
        app.UseStaticFiles();
        app.UseAuthentication();
        app.UseAuthorization();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });
        app.UseStaticFiles();
        app.UseSwagger();
        app.UseSwaggerUI(c =>
        {
            c.SwaggerEndpoint("/swagger/v1/swagger.json", "Test API V1");
        });
        app.UseCors("AllowSpecificOrigin");

    }

}

0
投票

您的问题可以订购

app.UseCors("AllowSpecificOrigin");
app.UseMvc();
© www.soinside.com 2019 - 2024. All rights reserved.