Я знаю, что этот вопрос задавался множество раз в SO
, но эта проблема совершенно иная!
Поскольку Mozilla
сам говорит о заголовке, вы должны установитьэто как показано ниже в nginX
:
add_header 'Access-Control-Allow-Origin' 'origin-list'
Я установил параметры CORS
, и интересная часть заключается в том, что preflight request
завершается успешно:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Origin,Content-Type,Accept,authorization,Expires,Pragma,x-custom-header
Access-Control-Allow-Methods: GET, POST, OPTIONS, PATCH
Access-Control-Allow-Origin: https://localhost:3000
Конечная точка /user
.Теперь фактический запрос GET
отправляется на сервер, и снова он успешно выполняется с 200
кодом ответа JSON
ожидаемой полезной нагрузки!
Проблема заключается в той части, в которой я хочу получить эти данные из jQuery
, как показано ниже:
$.ajax({
type: "GET",
url: url_endpoint,
beforeSend: function(request) {
request.setRequestHeader("Authorization", "Bearer " + _TOKEN);
},
dataType: "json",
error: function (data, stat) {
console.log('got error data: ', stat);
console.log(data);
},
complete: function(xhr, data) {
console.log('here is the data...', data, xhr);
}
}).catch(function(data,x,y) {
console.log(data,x,y,'it seems request has error!!!!');
});
Он регистрирует ошибки в запросе, как внутри catch
, и в консоли я вижу нижеошибка:
Блокировка перекрестного запроса: та же политика происхождения запрещает чтение удаленного ресурса в https://www.example.com/restapi/user. (причина: отсутствует заголовок CORS «Access-Control-Allow-Origin»).[Узнать больше]
Отображается, что заголовок отсутствует, а я объясняю, что заголовки возвращаются в OPTIONS
.Чтобы убедиться, что эта ошибка относится к этому конкретному запросу, я закомментировал запрос /user
и ошибка CORS
исчезла.
Почему я получаю CORS
, а ответ сервера 204 для OPTIONS
и почему я получаюCORS
при ответе json для /user