CORS не работает при получении запроса POST к API от клиента React - PullRequest
0 голосов
/ 22 января 2020

Я использую asp. net core 2.1 и у меня есть метод регистрации в контроллере для регистрации пользователя. В моем клиентском коде я использую fetch следующим образом:

`fetch ('http://localhost:53531/api/account/register', {          
            method: 'POST',        
            headers: { 'Content-Type': 'application/json'},   
            body: JSON.stringify(values)
         })`

для публикации данных моей формы. и методы в моем Startup.cs выглядят так:

ConfigureServices:

services.AddCors();

Configure:

 app.UseCors( builder => 
                 { builder.WithOrigins("http://localhost:3000/")
    .AllowAnyOrigin() 
    .AllowCredentials() 
    .AllowAnyMethod() 
    .AllowAnyHeader(); });

Несмотря на все, я получаю эту ошибку:

Доступ к выборке в 'http://localhost: 53531 / api / account / register ' from origin 'http://localhost: 3000 ' заблокирован CORS policy: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». Если непрозрачный ответ отвечает вашим потребностям, установите режим запроса «no-cors», чтобы получить ресурс с отключенным CORS.

Есть идеи, как это исправить?

Ответы [ 2 ]

0 голосов
/ 22 января 2020

Удалите AllowAnyOrigin(), если вы уже используете AllowCredentials(). Кроме того, из do c:

Указание AllowAnyOrigin и AllowCredentials является небезопасной конфигурацией и может привести к подделке межсайтовых запросов. Служба CORS возвращает неверный ответ CORS, когда приложение настроено с использованием обоих методов.

Попробуйте:

app.UseCors( builder => 
{ 
      builder.WithOrigins("http://localhost:3000/")   
              .AllowCredentials() 
              .AllowAnyMethod() 
              .AllowAnyHeader(); 
});
0 голосов
/ 22 января 2020
  1. Поскольку вы разрабатываете локально, добавьте эту строку в ваш пакет. json:

    "proxy": "http://localhost:53531
    
  2. Измените URL для получения на:

    fetch ('/api/account/register', {          
        method: 'POST',        
        headers: { 'Content-Type': 'application/json'},   
        body: JSON.stringify(values)
    })
    
...