我只是尝试使用get请求从FRED API获取数据。我一直收到“请求的资源上没有Access-Control-Allow-Origin标头。Origin 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>
发布于 2014-01-13 03:39:32
如果您的域名不是stlouisfed.org
,您可以使用跨域请求来实现httpGet
功能。因此,如果API响应没有Access-Control-Allow-Origin: *
头,所有请求都将失败。据我所知,FRED API
只由桌面程序使用,而不是web应用程序。
但是有一个iframe transport
可以绕过这一点。我创建了html,您可以在其中按下按钮并在iframe
中查看jsfiddle结果。但是我在这个jsshell站点的iframe onload
事件上遇到了一个问题--它总是坏掉。您可以在您的代码中添加iframe.onload
以从API获取答案,然后表单将更改iframe。
发布于 2014-01-13 03:49:09
我查看了所有的应用程序接口文档,没有提到get请求所需的任何额外内容。
他们的文档并不特定于在浏览器中运行的JavaScript。
有没有一个特定的行项目,我可以添加到我的现有代码,以满足这个‘访问-控制-允许-来源’头要求?
不是的。您需要从您的服务器发出请求。
你能举例说明一下这些线条是什么样子的吗?我将我的代码包含在工作API密钥中。
你的应用程序接口密钥应该保密(这是其他任何不直接使用客户端JavaScript做这件事的原因)。
https://stackoverflow.com/questions/21071945
复制相似问题