Итак, вот мой код инициализации 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.