Почему этот HTTP-запрос не выполняется? [Дубликат]

1

Я делаю запрос API с помощью этого кода:

function httpGet(url){
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
    console.log(this.status)
    if (this.readyState == 4 && this.status == 200) {
        console.log("Got names")
       getNamesFromJSONArray(request.responseText);
    };
};
request.open("GET", url, true);
request.setRequestHeader("Authorization", "Basic (API key goes here)");
request.setRequestHeader("Accept-Encoding", "gzip");
request.send();
}

Это сработало только на днях, но теперь это терпит неудачу, сказав мне:

Не удалось загрузить ресурс: предварительный ответ не увенчался успехом

а также

XMLHttpRequest не может загрузить https://api.insight.ly/v2.1/contacts. Предполетный ответ не увенчался успехом

Кроме того, "Got names" никогда не печатается.

Почему этот код сломался, когда он работал только на днях? Это проблема на конце API или моей?

ОБНОВИТЬ! Я нашел это на веб-сайте api. Каким будет самый простой способ реализовать это? В настоящее время у меня нет бэкэнд и не нужно ни для чего кроме этого. Я понимаю, что проблема заключается в том, что они не хотят, чтобы мой API был в читаемом Javascript, что имеет смысл. Могу ли я войти в API по-другому, возможно, по электронной почте и паролю пользователя?

  • 0
    Походит на проблему CORS для меня. Вам, вероятно, нужно отправить правильные заголовки доступа.
  • 0
    @ObsidianAge Тогда почему это сработало несколько дней назад?
Показать ещё 4 комментария
Теги:
xmlhttprequest
http

1 ответ

0

API должен иметь возможность (правильно) обрабатывать CORS, в частности, ваш вопрос касается предполета.

Перед выполнением фактического вызова CORS он попробует тот же вызов, используя метод OPTIONS, чтобы убедиться в его безопасности. Ожидается, что сервер вернет определенные заголовки.

Так что да, это на стороне API.

Вы можете прочитать дополнительную информацию об управлении доступом HTTP (CORS)

  • 0
    Спасибо за ответ! Я посмотрел на это и разместил обновление на мой вопрос. Любой совет?
  • 0
    Кажется, они уже ответили на ваш вопрос. Нет, вы не можете использовать CORS (вы не можете напрямую вызывать API), и они уже дали вам возможность написать прокси.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню