使用Javascript调用REST API

时间:2016-05-24 11:40:13

标签: javascript rest

我目前正在编写一个非常基本的HTML应用程序,它使用JavaScript来调用REST API(对于它的价值,它是HBase REST API)。目前我的调用没有给出任何适当的响应:响应代码为0(我理解的不是合法的响应代码,而是基本上是空的响应); empty statusText;空的responseText。

我对这种反应的直觉是问题出在我的网址上;因此我输出了URL。该网址最终如下:curl -i http://hbase_server.com:8080/table_name/key

然后我执行了function sendRequest() { var key = document.getElementById("Key").value; var url = "http://hbase_server:8080/table_name/" + key + ""; var req = new XMLHttpRequest() // Create the callback: req.onreadystatechange = function() { if (req.readyState != 4) return; // Not there yet if (req.status != 200) { document.getElementById("result").innerHTML = "Status: " + req.statusText; return; } // Request successful, read the response var resp = req.responseText; document.getElementById("result").innerHTML = resp; } req.open("GET", url, true); req.send(); document.getElementById("result").innerHTML = url; } ,这给了我我期待的完全响应,表明我的URL至少是正确的,因此问题必须与我的请求有关。我在下面发布代码。由于我对JavaScript的经验非常有限,很可能我犯了一个明显的错误。

char* argv[]

2 个答案:

答案 0 :(得分:2)

由于same-origin policy,除非请求页面位于同一个域或服务器设置相应的CORS headers,否则您将无法使用XHR获取数据。

尝试打开浏览器的开发者控制台,看看是否存在与此相关的错误。

答案 1 :(得分:1)

您正遭受所谓的"Same-origin policy“。您的客户端阻止您的代码调用您在请求中使用的URL,因为它与加载代码的域不同(即localhost)。