为什么我的 API 调用在 chrome 中有效但在我的代码中无效?
Why does my API call work in chrome but not in my code?
我正在尝试调用 Binance API 以获取 BTC 的 LTC 价格,我在浏览器“https://api.binance.com/api/v1/ticker/price?symbol=LTCBTC”上测试了 link 我如何获得 json 文件从那个 link 到我的 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
}
});
})
如果您在将数据类型:'jsonp' 更改为数据类型:'json' 后检查控制台,您将得到以下内容,因为您的代码和它们的脚本不在同一主机上,它们需要启用 Access-Control-Allow-Origin 从其他域访问。如果使用 php.
则可以使用 cur
Cross-Origin 请求被阻止:同源策略不允许读取位于 https://api.binance.com/api/v1/ticker/price?symbol=LTCBTC 的远程资源。 (原因:缺少 CORS header 'Access-Control-Allow-Origin')。
在执行来自浏览器或 postman 或 fiddler 的请求时,您将获得结果
但是在执行来自应用程序的请求时,您将失败并显示错误消息
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 问题。所以你可以尝试从客户端使用 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 的请求提供 json 使用 CORS 策略的数据
{"symbol":"LTCBTC","price":"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":"Too many parameters; expected '1' and received
'2'."}
它可能可以在您的网站上用 php 打开?我无法从我所在的系统进行测试我的平板电脑上没有套接字传输 "ssl" 设置来测试。
是的,它适用于 PHP 包装器。
myJSONP(<?php echo file_get_contents('https://api.binance.com/api/v1/ticker/price?symbol=LTCBTC');?>);
我正在尝试调用 Binance API 以获取 BTC 的 LTC 价格,我在浏览器“https://api.binance.com/api/v1/ticker/price?symbol=LTCBTC”上测试了 link 我如何获得 json 文件从那个 link 到我的 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
}
});
})
如果您在将数据类型:'jsonp' 更改为数据类型:'json' 后检查控制台,您将得到以下内容,因为您的代码和它们的脚本不在同一主机上,它们需要启用 Access-Control-Allow-Origin 从其他域访问。如果使用 php.
则可以使用 curCross-Origin 请求被阻止:同源策略不允许读取位于 https://api.binance.com/api/v1/ticker/price?symbol=LTCBTC 的远程资源。 (原因:缺少 CORS header 'Access-Control-Allow-Origin')。
在执行来自浏览器或 postman 或 fiddler 的请求时,您将获得结果
但是在执行来自应用程序的请求时,您将失败并显示错误消息
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 问题。所以你可以尝试从客户端使用 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 的请求提供 json 使用 CORS 策略的数据
{"symbol":"LTCBTC","price":"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":"Too many parameters; expected '1' and received '2'."}
它可能可以在您的网站上用 php 打开?我无法从我所在的系统进行测试我的平板电脑上没有套接字传输 "ssl" 设置来测试。
是的,它适用于 PHP 包装器。
myJSONP(<?php echo file_get_contents('https://api.binance.com/api/v1/ticker/price?symbol=LTCBTC');?>);