Почему я получаю ошибки CORS при запуске этого метода PATCH из React в WebAPI?C#

Место общения программистов C#
Ответить
Anonymous
 Почему я получаю ошибки CORS при запуске этого метода PATCH из React в WebAPI?

Сообщение Anonymous »

Итак, вот мой код инициализации Cors:

Код: Выделить всё

        app.UseCors(builder =>
builder.AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin());
И все же, когда я запускаю PATCH, я получаю следующую ошибку в Chrome 83:
Доступ для загрузки по адресу «https://api-dev. myproject.com/api/mp» из источника «https://users-dev.myproject.com» заблокирован политикой CORS: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». Если непрозрачный ответ соответствует вашим потребностям, установите режим запроса «no-cors», чтобы получить ресурс с отключенным CORS.
Вот код, вызывающий API (из React). :

Код: Выделить всё

  const response = await fetch(API_URL() + `/mp`, {
method: 'PATCH',
body: `"${JSON.stringify(mpForm.values)}"`,
headers: {
Authorization: 'Bearer ' + apiToken,
'Content-type': 'application/json'
}
});
Что здесь может быть не так? Большинство запросов API к этому домену выполняются нормально. На данный момент это только этот.
ОБНОВЛЕНИЕ
На случай, если у вас возникла именно эта проблема, корень Причиной этой проблемы была линия тела:

Код: Выделить всё

body: `"${JSON.stringify(mpForm.values)}"`,
и проблема была решена путем рефакторинга API для работы с таким телом:

Код: Выделить всё

body: JSON.stringify(mpForm.values),
Причина этой проблемы заключалась в том, что функция stringify заключала в возвращаемое значение двойные кавычки, в результате чего передавалась такая строка:

Код: Выделить всё

'"{"foo":"bar"}"'
что затем вызвало ошибку CORS.

Подробнее здесь: https://stackoverflow.com/questions/629 ... -to-webapi
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»