我只是想使用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>
答案 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)。