Bitcoin Forum

Local => Кодеры => Topic started by: Dex on December 03, 2013, 09:34:13 AM



Title: BTC-E.com public API и вызов из javascript
Post by: Dex on December 03, 2013, 09:34:13 AM
Добрый день!

Подскажите, вот есть у биржи апи:
https://btc-e.com/api/2/btc_rur/ticker

выдает JSON данные.

Вопрос, как можно получить эти данные из javascript на вебстранице?

Хром ругается, что сервер не выдаёт заголовок Origin, поэтому запрос сделан не будет
(пробовал со страницы с диска и полученную с хостинга).

Что-то посмотрел про JSONP, но API не делает обертку ни на json=, ни на callback=

Это у меня руки не из того места растут или в принципе через javascript и вебстраницу в Хроме вытащить нельзя?


Title: Re: BTC-E.com public API и вызов из javascript
Post by: rPman on December 03, 2013, 03:59:41 PM
На своем сервере сделай что-то типа :
Code: (php)
<?php echo file_get_contents('https://btc-e.com/api/2/btc_rur/ticker'); ?>
Или соригинальничай (может не сработать)
Code: (php)
<?php header('Location: https://btc-e.com/api/2/btc_rur/ticker'); ?>

p.s. осторожно с универсализацией этого примера, например не нужно запихивать адрес для редиректа в http запрос напрямую, либо контролировать его, лимитируя по списку, чтобы не было возможности DDOS-ить btc-e через ваш сервер.


Title: Re: BTC-E.com public API и вызов из javascript
Post by: Dex on December 04, 2013, 03:44:46 PM
Не. Через php не нужно. В принципе это понятно как сделать.

Весь вопрос был именно в получении через javascript, например, через jQuery ($.getJSON).
Биржа не выдаёт Allow-Origin, поэтому браузер не хочет пропускать GET запрос со страницы.
Если пробовать через jsonp (добавляя callback=?), запрос проходит, но парсер jQuery спотыкается
на получаемом формате и тоже вываливается с ошибкой. Плюс сами данные приходят не как
application/json, а как text/html

Пока нашёл три способа:
1) Отключать в браузере проверку ориджина (через флаг -disable-web-security)
2) Использовать сторонние сервера по прокидыванию jsonp запросов (то, что ты предлагаешь, но общедоступное,
а не свой велосипед)
3) Поставить расширение для Хрома, которое перехватывает все запросы и добавляет заголовок Allow-Origin

Т.к. у меня Хром, пока пользуюсь третьим вариантом, как самым простым.
Но Хром не у всех, а в ФФ такой финт сделать не получится.

Всё ещё ищу решение.
Может проще в тикер поддержки биржи написать?