如何解决Access-Control-Allow-Origin

时间:2018-01-11 19:22:25

标签: jquery

  <!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中运行?

1 个答案:

答案 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没有。