为什么我的 API 调用可以在 Chrome 中运行,但不能在我的代码中运行?

问题描述 投票:0回答:4

我正在尝试调用 Binance API 以获取 BTC 的 LTC 价格,并且我在浏览器上测试了该链接“https://api.binance.com/api/v1/ticker/price?symbol=LTCBTC”我从该链接获取 JSON 文件到我的 JavaScript 文件中?

$(document).ready(function() {

var url = 'https://api.binance.com/api/v1/ticker/price?symbol=LTCBTC';

$.ajax( {
    url: url,
    dataType: 'jsonp',
    type: 'GET',
    success: function(data) {
            console.log(data); //returns nothing
        }
});

})
javascript ajax
4个回答
4
投票

正如其他答案中提到的,存在 CORS 问题。所以你可以尝试从客户端使用 proxyURL,如下所示,

$(document).ready(function() {

var url = 'https://api.binance.com/api/v1/ticker/price?symbol=LTCBTC';

const proxyURL = "https://cors-anywhere.herokuapp.com/";
$.getJSON(proxyURL + url, function(playerData) {
  console.log(playerData);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

希望有帮助。


1
投票

https://api.binance.com/api/v1/ticker/price?symbol=LTCBTC 的请求提供了使用 CORS 策略的 json 数据

{"交易品种":"LTCBTC","价格":"0.01520100"}

JSONP 看起来像

myCallback({"symbol":"LTCBTC","price":"0.01520100"})

这看起来和工作起来都像 Javascript / PHP 函数。

jsonp 的 URL 在 URL 中包含回调... https://api.binance.com/api/v1/ticker/price?symbol=LTCBTC&callback=myCallback

但本网站不支持

{"code":-1101,"msg":"参数太多;预期为“1”并已收到 ‘2’。”}


它可能可以在您的网站上用 php 打开吗?我无法从我所在的系统进行测试我的平板电脑上没有套接字传输“ssl”设置来测试。

是的,它可以通过 PHP 包装器运行。

myJSONP(<?php echo file_get_contents('https://api.binance.com/api/v1/ticker/price?symbol=LTCBTC');?>);

0
投票

如果您在将 dataType: 'jsonp' 更改为 dataType: 'json' 后检查控制台,您将得到以下结果,因为您的代码及其脚本不在同一主机上,并且他们需要启用 Access-Control-Allow-Origin 才能从其他域。如果你使用 php,你可以使用 cur。

跨源请求被阻止:同源策略不允许读取https://api.binance.com/api/v1/ticker/price?symbol=LTCBTC处的远程资源。 (原因:CORS 标头“Access-Control-Allow-Origin”丢失)。


0
投票

在从浏览器、邮递员或提琴手执行请求时,您将得到结果

但是在从应用程序执行请求时,您将失败并显示错误消息

Access to XMLHttpRequest at 'https://api.binance.com/api/v1/ticker/price?symbol=LTCBTC' from origin 'http://127.0.0.1:5500' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

必须从服务器端解决该问题。

请参考

了解一下

此外,如果您使用 C# .Net 作为后端,请找到问题的解决方案

cors的解决方案

© www.soinside.com 2019 - 2024. All rights reserved.