簡體   English   中英

從CURL到AJAX XMLHttp

[英]From CURL to AJAX XMLHttp

由於平台限制,我正在嘗試將curl代碼從稱為TextRazor的API轉換為AJAX XMLHttp。 我已經嘗試了社區中類似問題的許多解決方案,但似乎無法獲取任何數據,或者只能獲取“ 400:Bad Request”。 如果重要的話,從調用該API的文檔中可以看到:

curl -X POST \
-H "x-textrazor-key: YOUR_API_KEY" \
-d "extractors=entities,entailments" \
-d "text=Spain's stricken Bankia expects to sell off..." \
https://api.textrazor.com/

我當前的AJAX XMLHttp代碼如下所示:

var xhttp = new XMLHttpRequest();
var url = "https://api.textrazor.com/";
var params = "extractors=entities&text=Spain's stricken Bankia expects to sell...";
xhttp.open("POST", url, true);

xhttp.setRequestHeader("x-textrazor-key", "YOUR_API_KEY");
xhttp.setRequestHeader("Content-length", params.length);

xhttp.onreadystatechange = function() {
if(xhttp.readyState == 4 && xhttp.status == 200) {
    alert(xhttp.responseText);
}
}

xhttp.send(params);

謝謝你的支持!

您正在使用相同的原始策略

由於您是在進行跨域請求並添加自定義標頭,因此瀏覽器在發出請求前先發出預檢OPTIONS請求

您向其發送請求的服務器不准備響應OPTIONS請求,因此它向您拋出400。

要解決此問題:

  • 他們應該支持CORS
  • 他們應該提供獲取JSONP等數據的替代方法(不建議使用,現在有CORS)
  • 您不應從瀏覽器直接向其服務器發出請求

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM