我想将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": ""
}
}
}
我尝试了许多不同的解决方案,但没有帮助((((
完整启动:
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");
}
}
您的问题可以订购
app.UseCors("AllowSpecificOrigin");
app.UseMvc();