CORS и авторизация через Basic, выдаёт ошибку, как настроить?
has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.
Такую ошибку выдаёт фронт на JS
Хедеры NGINX такие
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Credentials' 'true' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, PATCH, PUT, DELETE, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'Authorization, Origin, Content-Type, X-Auth-Token' always;
add_header 'Access-Control-Expose-Headers' 'Authorization' always;
Через постмен всё окей работает. Что не так?
Надо js код видеть. Вероятно, каких-то заголовков при отправке не хватает.
Еще раз сравните отправляемые заголовки из js с теми, которые отправляете через Postman.
Access-Control-Allow-Origin specifies either a single origin which tells browsers to allow that origin to access the resource; or else — for requests without credentials — the "*" wildcard tells browsers to allow any origin to access the resource.
По русски - нельзя вайлкардить origin для запросов с авторизацией. Весьма вероятно это в консоли девтулзов разъяснено.
Ну а про постман выше написали.
Для правильного вопроса надо знать половину ответа
В ответ на preflight-запрос OPTIONS с сервера возвращается ответ с кодом, отличным от 2xx.
Postman игнорирует политику CORS, поэтому им проверять надо по отдельности запрос OPTIONS и запрос POST.
king169, Тем не менее, ошибка говорит, что запрос OPTIONS возвращает ошибку. Смотрите вкладку сети в консоли браузера, что отправляется на сервер и что возвращается.
king169, никак... но постман не выполняет JS от имени юзера, чем плодит некорректный доступ :)
CORS — защита пользователя браузера от JS на левом сайте, а не защита сервера
king169, это не имее тсмысла, в постмане вы можете проставить любые заголовки...
CORS запрещает проставлять "любые определенные заголвоки" для определенного сайта за пределами этого сайта