CORS включен на сервере, все еще получающем ошибку заголовка - PullRequest
0 голосов
/ 08 января 2019

Кажется, это очень популярный вопрос, однако я не смог найти решение, которое работает

Короче говоря, только в Chrome я получаю следующую ошибку при выполнении запроса на установку, исправление, удаление или опцию

from origin 'http://localhost:3000' заблокировано политикой CORS: исправление метода не разрешено Access-Control-Allow-Methods в ответе перед полетом.

Звонок отлично работает в IE и Firefox. Проходя через почтальона и чванства тоже успешно работает

В моем API у меня есть

     public IServiceProvider ConfigureServices(IServiceCollection services)
    {   
         services.AddCors();
         return configureMvcServices.ExecuteConfig();
    }


public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
            app.UseCors(options => options.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod());
            var configureApp = new ConfigureApp(app, env);
            configureApp.DoConfig();
}

Пока я тоже пробовал

  • Ручная настройка заголовков
  • Создание политики в сервисной функции и использование атрибута allowcors на контроллере, использующем указанное имя политики
  • Создание пользовательского промежуточного программного обеспечения для другого ответа, который я не могу найти, который устанавливает заголовки и параметры

Я также попытался вручную установить заголовки, чтобы они принимали все безрезультатно. Был ответ, который я не могу найти снова для создания промежуточного программного обеспечения, но это не изменило результат. У меня также

И я заблудился, как решить эту проблему

Вот код на стороне клиента, делающий вызов

 return fetch(url + path, {
        method,
        headers:{
            'Accept': 'application/json',
            'crossDomain':'true',
            'Content-Type': 'application/json',
            'Pragma': 'no-cache',
            'Access-Control-Allow-Methods': '*'
        },
        body: JSON.stringify(data)
    })

Я не знаю, какие заголовки я мог установить на стороне клиента, попытался изменить на обычный / текстовый, но это не сработало, если таковые могли разрешить это, и я исчерпал свой гугл-фу.

дополнительно получает и сообщения работают нормально

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 08 января 2019

Хорошо, я не могу объяснить, почему, но другой разработчик в команде сумел решить это.

Короче, похоже, что Chrome не нравится AllowAnyMethod()

и вы должны прописать каждый метод

  app.UseCors(options =>
               options
               .AllowAnyOrigin()
               .AllowAnyHeader()
               .WithMethods("POST", "GET", "PATCH", "PUT", "DELETE")
           );
...