<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery.getJSON demo</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
<div id="test"></div>
<script>
(function() {
var flickerAPI = "https://api.cryptowat.ch/markets/bitstamp/btcusd/price";
$.getJSON( flickerAPI )
.done(function( data ) {
alert("price: " + data['result'].price + " cost: " + data['allowance'].cost + " remaining: " + data['allowance'].remaining);
})
.fail(function() {
alert("FAIL!");
});
})();
</script>
</body>
</html>
在IE中显示其他浏览器返回的数据,此代码返回“FAIL!”
在firefox中,我使用了firebug并检查了返回的数据:“CORS标题'Access-Control-Allow-Origin'错过了”。
如何设置Access-Control-Allow-Origin和正确的代码以在Firefox中运行?
答案 0 :(得分:0)
您应该查看一些CORS教程/介绍。一个伟大的是: https://www.html5rocks.com/en/tutorials/cors/
话虽如此,简短的回答是API的提供者需要允许跨域访问。像apache配置中的以下内容:
/(\S+\.(COM|NET|ORG|CA|EDU|UK|AU|FR|PR)\S+)/i
不幸的是,不是你能做多少事情。在某些情况下,当dataType工作时切换到'JSONP'。在您的情况下,您可以将对Header set Access-Control-Allow-Origin *
的通话更改为
$.getJSON
但是,这要求服务器知道如何响应JSONP,看起来像cryptowat.ch没有。