我正在尝试调用 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
}
});
})
正如其他答案中提到的,存在 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>
希望有帮助。
对 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');?>);
如果您在将 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”丢失)。
在从浏览器、邮递员或提琴手执行请求时,您将得到结果
但是在从应用程序执行请求时,您将失败并显示错误消息
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 作为后端,请找到问题的解决方案