У меня CORS работает нормально в "обычных" контроллерах {controller} / {action} / {id?}. Однако CORS не работает в методах действия с указанными атрибутами c [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();
}
, а метод Configure выглядит следующим образом:
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");
});
}
Если я отправлю POST / api / customer CORS работает.
Если я отправлю сообщение / api / customer / payment CORS не работает (Chrome говорит: «... заблокирован политикой CORS: ответ на предпечатный запрос не пропускает доступ») контрольная проверка: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». ")
Я следовал предоставленному ответу для Не могу включить CORS для указанного c API контроллеры в ASP. NET Core WebApp, нацеленные на netcoreapp3.0 , но проблема все еще остается для меня.
Есть мысли?