В моей настройке ASP.Net Core 2.2 у меня есть метод для создания политики «разрешить все» CORS
public static IServiceCollection AddAllowAllCors(this IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("AllowAll", builder =>
{
builder.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials()
.SetIsOriginAllowed(_ => true);
});
});
return services;
}
, которая добавляется в ConfigureServices
:
public void ConfigureServices(IServiceCollection services)
{
...
services.AddAllowAllCors();
...
}
Который я активирую в своем методе Configure
:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
...
app.UseCors("AllowAll");
...
}
Когда я пытаюсь сделать запрос PUT из моего приложения React, запрос OPTIONS выглядит в Chrome следующим образом:
Но фактический запрос PUT завершается с ошибкой 405:
Это несмотря на то, что заголовок Access-Control-Allow-Origin
в ответе OPTIONS должен быть разрешен.Это работало в 2.1, но не в 2.2.Точное сообщение об ошибке:
Доступ к выборке в 'MY_REQUEST_URI' был заблокирован политикой CORS: в запрошенном ресурсе отсутствует заголовок 'Access-Control-Allow-Origin'.Если непрозрачный ответ удовлетворяет вашим потребностям, установите режим запроса «no-cors», чтобы получить ресурс с отключенным CORS.
Я также пытался удалить AllowCredentials()
в политике, но это не помогло.не имеет значения.