I have enabled CORS in my ASP.NET MVC API, with this code:
public static void Configure(IApplicationBuilder app)
{
app.UseCors("CorsName");
}
public static void ConfigureServices(IServiceCollection services, IConfiguration config)
{
// Configuration and adding Cross-origin resource sharing
services.AddCors(options =>
{
options.DefaultPolicyName = "CorsName";
options.AddPolicy("CorsName", builder =>
{
builder
.WithOrigins(config["AppSettings:CorsOrigin"])
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials()
.AllowAnyOrigin()
.Build();
});
});
}
I try to get data from API, opening the localhost:6320/api/users and it works, I get all the data. Now when I try to get data from Angular 7 app, the data is not loaded and there is an error
"Access to XMLHttpRequest at 'http://localhost:6320/api/users' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource."
Why there is an error when trying to get data from Angular app if I have enabled CORS?
Here is the AppSettings
"AppSettings": {
"DashboardUrl": "http://127.0.0.1:4200",
"CorsOrigin": "http://localhost:4200"
}
Startup configuration from Startup.cs
public Startup(IHostingEnvironment env, IConfiguration configuration)
{
Configuration = configuration;
HostingEnvironment = env;
}
public void Configure(IApplicationBuilder app, IHostingEnvironment hEnv)
{
InitializeIdentityDbAsync(app.ApplicationServices).Wait();
DiagnosticsStartup.Configure(app, hEnv);
CorsStartup.Configure(app);
IdentityStartup.Configure(app, Configuration);
MVCStartup.Configure(app);
}
public void ConfigureServices(IServiceCollection services)
{
CorsStartup.ConfigureServices(services, Configuration);
services.AddAutoMapper();
services.AddSingleton<IConfiguration>(o => Configuration);
services.AddScoped<IAppContext, AppContext>();
services.AddSingleton<IEmailService, EmailService>();
services.AddScoped<AuthService>();
services.AddScoped<UserService>();
EFStartup.ConfigureServices(services, Configuration);
IdentityStartup.ConfigureServices(services, HostingEnvironment, Configuration);
MVCStartup.ConfigureServices(services);
AutoMapperConfig.RegisterMappings(services.BuildServiceProvider());
}
WithOrigins(config["AppSettings:CorsOrigin"])
andAllowAnyOrigin()
. Also verify yourconfig["AppSettings:CorsOrigin"]
returns the good value. – youriStartup.Configure
implementation. – Jota.Toledo