由于平台限制,我正在尝试将curl代码从名为TextRazor的API转换为AJAX XMLHttp。我已尝试过社区类似问题的许多解决方案,但似乎无法获得任何数据或只是“400:错误请求”。如果重要,从调用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);
感谢您的支持!
答案 0 :(得分:0)
您正在遇到preflight OPTIONS request。
由于您正在制作跨源请求并添加自定义标头,因此浏览器在发出您要求的请求之前会生成{{3}}。
您提出请求的服务器不准备响应OPTIONS请求,因此它会向您抛出400。
解决此问题: