Почему мой вызов API работает в Chrome, а не в моем коде? - PullRequest
6 голосов
/ 20 апреля 2019

Я пытаюсь вызвать Binance API для получения цены LTC в BTC, и я проверил ссылку в своем браузере "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
        }
});

})

Ответы [ 4 ]

5 голосов
/ 20 апреля 2019

Как уже упоминалось в другом ответе, существует проблема с 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 голос
/ 20 апреля 2019

Запрос к 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.

URL-адрес для jsonp включает в себя обратный вызов в 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 голосов
/ 20 апреля 2019

При выполнении запроса от вашего браузера или почтальона или скрипача вы получите результат

Но при выполнении запроса из приложения вы не получите сообщение об ошибке

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.

проблема должна быть устранена со стороны сервера.

Пожалуйста, обратитесь

Cors понимание

Кроме того, найти решение проблемы, если вы 'Используем C # .Net в качестве бэкэнда

Решение для Cors

0 голосов
/ 20 апреля 2019

Если вы проверяете консоль после изменения dataType: 'jsonp' на dataType: 'json', вы получите следующее, поскольку ваш код и его скрипт не находятся на одном хосте, и им нужно включить Access-Control-Allow-Origin для доступ из другого домена. Вы можете использовать cur, если вы используете php.

Запрос перекрестного источника заблокирован: та же политика происхождения запрещает чтение удаленного ресурса на https://api.binance.com/api/v1/ticker/price?symbol=LTCBTC. (причина: отсутствует заголовок CORS «Access-Control-Allow-Origin»).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...