Я пытаюсь разрешить моему приложению ANgular, работающему на localhost:4200
, запрашивать данные из моего внутреннего интерфейса API .NET Core 2.2, работающего на localhost:44337
.Я добавил политику Cores в ConfigureServices
, добавил ее в Configure
и добавил аннотацию UseCors
на своих конечных точках, но все еще получаю эту ошибку:
Access to XMLHttpRequest at 'https://localhost:44337/api/users/1' 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.
Startup.cs
public string DefaultCorsPolicy = "DefaultCorsPolicy";
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy(DefaultCorsPolicy,
builder =>
{
builder
.AllowAnyHeader()
.AllowAnyMethod()
.WithOrigins("http://localhost:4200/");
});
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseCors(DefaultCorsPolicy);
app.UseMvc();
}
UsersController.cs
[HttpGet("{id}")]
[EnableCors("DefaultCorsPolicy")]
public async Task<ActionResult> GetUser(int id)
{
var settings = await _service.GetUser(id);
return Ok(settings);
}
Если я добавлю Response.Headers.Add("Access-Control-Allow-Origin", "*")
в фактический метод GetUser
, он будет работать.Но я не хочу грубой силы этого.
Я позаботился о том, чтобы сделать вызовы AddCors
и UseCors
в начале ConfigureServices
и Configure
соответственно.Но это все равно не сработает.