У меня CORS нормально работает в "обычных" контроллерах {controller} / {action} / {id?}. Однако CORS не работает в методах действий с определенными атрибутами [Route ("routname")].
Пример контроллера с маршрутом:
[Route("api/[controller]")]
[ApiController]
public class CustomerController : ControllerBase
{
[HttpPost]
public async Task<ActionResult<Guid>> Post([FromBody] Customer value)
{
...
}
[HttpPost]
[Route("payment")]
public async Task<ActionResult<CustomerPaymentResponse>> Pay([FromBody] CustomerPaymentRequest value)
{
...
}
Мой метод ConfigureServices в файле startup.cs выглядит так:
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(c =>
{
c.AddPolicy("AllowAnyOrigin", options => options
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader());
});
services.AddRouting();
services.AddControllers();
}
и метод настройки выглядит так:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseCors();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers().RequireCors("AllowAnyOrigin");
});
}
Если я отправляю сообщение на / api / customer, CORS работает.
Если я отправляю сообщение на / api / customer / payment, CORS не работает (Chrome сообщает: «... был заблокирован политикой CORS: ответ на предварительный запрос не проходит проверку контроля доступа: Нет» Заголовок Access-Control-Allow-Origin 'присутствует в запрошенном ресурсе. ")
Я выполнил предоставленный ответ для Не могу включить CORS для определенных контроллеров API в ASP.NET Core WebApp, нацеленном на netcoreapp3.0, но проблема все еще остается для меня.
Есть предположения?