Ich mache eine Anfrage API mit diesem Code:Warum schlägt diese HTTP-Anfrage fehl?
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();
}
Es nur den anderen Tag gearbeitet, aber jetzt schlägt es, mir zu sagen:
fehlgeschlagen Ressource laden: Preflight Antwort ist nicht erfolgreich
und
XMLHttpRequest kann nicht loa d https://api.insight.ly/v2.1/contacts. Preflight-Antwort ist nicht erfolgreich
Auch "Got Namen" wird nie gedruckt.
Warum sollte dieser Code brechen, wenn es nur den anderen Tag gearbeitet? Ist es ein Problem auf der API oder auf meinem?
UPDATE! Ich fand this auf der api-Website. Was wäre der einfachste Weg dies zu implementieren? Ich habe derzeit kein Backend und brauche für nichts außer diesem. Ich verstehe das Problem, weil sie nicht möchten, dass meine API in Client-lesbarem Javascript, was Sinn macht. Könnte ich mich auf andere Weise in die API einloggen, vielleicht durch die E-Mail-Adresse und das Passwort eines Benutzers?
Klingt wie ein CORS Problem für mich. Sie müssen wahrscheinlich die richtigen Zugriffsheader senden. –
@ObsidianAge Warum hat es dann vor ein paar Tagen funktioniert? –
Für eine Erklärung von dem, was hier geschieht, sehen https://stackoverflow.com/a/45533146/441757 oder https://stackoverflow.com/questions/45586064/receive-oauth2-token-from-xhr-request/45586285# 45586285 oder https://stackoverflow.com/questions/45210184/why-is-my-drupal-8-cors-setup-not-working/45312903#45312903 (die markierte Frage als ein Duplikat leider keine Antwort hat, die erklärt tatsächlich überhaupt das Verhalten für diese Art von Fall, soweit ich sehen kann). Der Kernpunkt ist: Der Endpunkt "https: // api.insight.ly/v2.1/contacts" erfordert die Berechtigung für OPTIONS-Anforderungen. Es sollte nicht. – sideshowbarker