FRED API的HTTP GET请求跨源错误

时间:2014-01-12 06:27:22

标签: javascript api get

我只是想使用get请求从FRED API获取数据。我一直得到“请求资源上没有Access-Control-Allow-Origin标头.Init null为不允许访问”。我查看了所有API文档,并且没有提及get请求所需的任何其他内容。是否有一个特定的行项目,我可以添加到我的现有代码,以满足这个'Access-Control-Allow-Origin'标题要求?你能举例说明这些行的样子吗?我包含了我的代码工作API密钥。谢谢

  <!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<script>

function httpGet(theUrl)
{
    var xmlHttp = null;

    xmlHttp = new XMLHttpRequest();
    xmlHttp.open( "GET", "http://api.stlouisfed.org/fred/releases/dates?api_key=1cee0e87e5e3362716028352d3d1c160", false );
    xmlHttp.send( null );
    return xmlHttp.responseText;
}
</script>



</head>

<body>
<button onclick="httpGet()">http GET</button>

</body>
</html>

2 个答案:

答案 0 :(得分:0)

如果您的域名不是httpGet,则使用跨域请求运行stlouisfed.org。因此,如果API响应没有Access-Control-Allow-Origin: *标头,则所有请求都将失败。 据我所知,FRED API仅使用桌面程序,而不是网络应用程序。

但有一个iframe transport可以绕过这个。我创建了html jsfiddle,您可以在其中按下按钮,然后在iframe中查看API结果。但是我在这个jsshell网站中遇到iframe onload事件的问题 - 它总是坏了。您可以在代码中添加iframe.onload以从API获得答案,然后该表单将更改iframe。

答案 1 :(得分:0)

  

我查看了所有API文档,并且没有提及get请求所需的任何其他内容。

他们的文档并非特定于在浏览器中运行的JavaScript。

  

是否有一个特定的行项目可以添加到现有代码中以满足此“Access-Control-Allow-Origin”标头要求?

没有。您需要从服务器发出请求。

  

你能举例说明这些线会是什么样子吗?我将代码包含在工作API密钥中。

您的API密钥应该保密(这是任何其他原因,不能直接使用客户端JavaScript)。