Ваш API работает в Postman. Работает через
curl. Но стоит вызвать его из браузера — и внезапно появляется CORS error.> Дело в браузере, а не в сервере
Request может успешно дойти до сервера. Сервер может даже вернуть
200. Но браузер всё равно может запретить frontend читать response, если CORS headers настроены неправильно.Postman и curl не волнует CORS. Браузер — волнует.
> Preflight, который вы не отправляли
Здесь всё становится интереснее. Вы отправляете
POST с JSON, добавляете Authorization header или используете PUT / DELETE. Перед фактическим request браузер может сначала отправить OPTIONS request. Если сервер не обработает его правильно, основной request вообще не будет отправлен. Именно поэтому GET может работать, а POST — внезапно нет.> Wildcard, который не работает с credentials
Если вы отправляете credentials, то:
Access-Control-Allow-Origin: *
не сработает.
Нужно разрешить конкретный origin и добавить:
Access-Control-Allow-Credentials: true
CORS — это не ваш API, который говорит «нет».
С API всё может быть в полном порядке. Просто браузер применяет правила безопасности для cross-origin requests.
👉 @BackendPortal
