@lb-web

Почему не срабатывает XMLHttpRequest?

Суть такая, есть запрос отсюда:
var data = "{}";

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.themoviedb.org/3/configuration/countries?api_key=");

xhr.send(data);

На чистом js. При выполнении с браузера выходит, что
Access to XMLHttpRequest at 'https://api.themoviedb.org/3/configuration/countri...' from origin 'localhost:63342' has been blocked by CORS policy: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.


При этом, через jquery работает нормально и json возвращает.
Как быть на чистом js?

P.S. Заголовки возвращает адекватные
spoiler

Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: ETag, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, Retry-After
Cache-Control: public, max-age=28800
Content-Encoding: gzip
Content-Length: 2438
Content-Type: application/json;charset=utf-8
Date: Sat, 12 Jan 2019 23:23:33 GMT
ETag: W/"784d30614e227640b6c48919d4080ad1"
Server: openresty
Vary: Accept-Encoding
X-RateLimit-Limit: 40
X-RateLimit-Remaining: 39
X-RateLimit-Reset: 1547335423
Provisional headers are shown
Origin: localhost:63342
Referer: localhost:63342/untitled/test.html?_ijt=n9j52vi8uf...
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
  • Вопрос задан
  • 1157 просмотров
Решения вопроса 1
@Artray
Заголовки возвращает адекватные


Не хватает заголовка
Access-Control-Allow-Credentials: true

Запросы от имени пользователя

Как быть на чистом js?


var data = "{}";

var xhr = new XMLHttpRequest();

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.themoviedb.org/3/configuration/countries?api_key=");

xhr.send(data);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы