我使用這個代碼使API請求:爲什麼這個HTTP請求失敗?
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不能LOA d https://api.insight.ly/v2.1/contacts。 預檢反應不成功
另外,「Got names」從未打印過。
這段代碼爲什麼會在前一天工作時崩潰?這是API端還是我的問題?
更新! 我在api網站上找到了this。實現這個最簡單的方法是什麼?我目前沒有後端,除此之外不需要任何東西。我理解這個問題是因爲他們不希望我的API使用客戶端可讀的Javascript,這很有道理。我是否可以用其他方式登錄到API,可能是用戶的電子郵件和密碼?
聽起來像是一個CORS問題給我。您可能需要發送正確的訪問標題。 –
@ObsidianAge那麼爲什麼它在幾天前工作? –
有關此處發生的情況的說明,請參閱https://stackoverflow.com/a/45533146/441757或https://stackoverflow.com/questions/45586064/receive-oauth2-token-from-xhr-request/45586285# 45586285或https://stackoverflow.com/questions/45210184/why-is-my-drupal-8-cors-setup-not-working/45312903#45312903(標記爲重複的問題遺憾地沒有答案實際上就這種情況的所有行爲進行了解釋,就我所見)。要點是:'https:// api.insight.ly/v2.1/contacts'端點需要對OPTIONS請求進行授權。它不應該。 – sideshowbarker