Title: wex trade api + js. Ошибка Post by: marssx on May 14, 2018, 10:21:51 PM В общем первый раз пишу на javascrypt (да и с вебом раньше не связывался).
Попытался написать скрипт для получения баланса wex. Но не могу разобраться с api что то (или не с ним). И следующие проблемы ответ такой приходит {success: 0, error: "api key not specified"} error: "api key not specified" success: 0 Может кто подскажет как надо? Погуглил примеры запросов, но как то не нашел ошибку( Плюс к этому в консоли хрома: Failed to load https://wex.nz/tapi: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. Собственно код: <script type="text/javascript"> /* Данная функция создаёт кроссбраузерный объект XMLHTTP */ function getXmlHttp() { var xmlhttp; try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest(); } return xmlhttp; } function test() { var key = 'тут ключ'; var secret = 'тут секрет'; var xmlhttp = getXmlHttp(); // Создаём объект XMLHTTP xmlhttp.open('POST', 'https://wex.nz/tapi', true); // Открываем асинхронное соединение xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); // Отправляем кодировку xmlhttp.setRequestHeader('Access-Control-Allow-Origin', '*'); xmlhttp.setRequestHeader('Access-Control-Allow-Methods', 'POST,GET'); xmlhttp.setRequestHeader('Access-Control-Allow-Headers', 'origin, content-type, accept'); xmlhttp.setRequestHeader("Key", key); // Отправляем кодировку var message = "method=getInfo&nonce=1118"; // пока что вручную нонсы изменять) var encrypted = CryptoJS.HmacSHA512(message, secret).toString(CryptoJS.enc.hex); xmlhttp.setRequestHeader("Sign", encrypted ); xmlhttp.send(encrypted); // Отправляем POST-запрос xmlhttp.onreadystatechange = function() { // Ждём ответа от сервера if (xmlhttp.readyState == 4) { // Ответ пришёл if(xmlhttp.status == 200) { // Сервер вернул код 200 (что хорошо) document.getElementById("summa").innerHTML = xmlhttp.responseText; // Выводим ответ сервера } } }; } </script> Title: Re: wex trade api + js. Ошибка Post by: ne0nx9 on May 18, 2018, 12:23:44 AM а в каком контексте планируешь использовать этот код?
var key = 'тут ключ'; var secret = 'тут секрет'; явно нельзя хранить на html файле Title: Re: wex trade api + js. Ошибка Post by: tmtdev on May 18, 2018, 08:57:57 AM Твой клиент должен обращаться к твоему бэкенду. Бэкенд в свою очередь отправляет запрос на wex и отдает ответ. Тогда проблемы с CORS запросы не будет и приватные ключ для API wex будет недоступен во фронтенде. Бэкенд на чем написан?
Title: Re: wex trade api + js. Ошибка Post by: marssx on May 18, 2018, 10:19:50 AM а в каком контексте планируешь использовать этот код? Просто хотел пощупать работу с api, никогда раньше не связывался с вебом вообще.var key = 'тут ключ'; var secret = 'тут секрет'; явно нельзя хранить на html файле Про ключи знаю, это просто никидал для теста. В реально проекте их там не будет Title: Re: wex trade api + js. Ошибка Post by: marssx on May 18, 2018, 10:23:46 AM Твой клиент должен обращаться к твоему бэкенду. Бэкенд в свою очередь отправляет запрос на wex и отдает ответ. Тогда проблемы с CORS запросы не будет и приватные ключ для API wex будет недоступен во фронтенде. Бэкенд на чем написан? А зачем еще бэкенд нужен? js отправляет post запрос.Exmo с этим кодом отрабатывает. Почти с этим. Code: ... Title: Re: wex trade api + js. Ошибка Post by: ne0nx9 on May 24, 2018, 10:58:01 AM Ну судя по вот этому, он почему-то не устанавливает Header-ы
Code: {success: 0, error: "api key not specified"} error: "api key not specified" success: 0 глянь в сторону https://github.com/arvitaly/btc-e3 Title: Re: wex trade api + js. Ошибка Post by: marssx on May 24, 2018, 04:55:14 PM Ну судя по вот этому, он почему-то не устанавливает Header-ы чужой код как то с трудом перевариваю, но спасибо, попробую. Думал в сторону того что не правильно составлял хейдеры, может не то в запрос вставлял. Exmo эти хейдеры принимает нормальноCode: {success: 0, error: "api key not specified"} error: "api key not specified" success: 0 глянь в сторону https://github.com/arvitaly/btc-e3 Title: Re: wex trade api + js. Ошибка Post by: marssx on May 24, 2018, 08:07:14 PM update. Код работает в IE. В остальных проблема с cors, хз что с ним делать
Title: Re: wex trade api + js. Ошибка Post by: reddish111 on June 02, 2018, 04:10:01 PM update. Код работает в IE. В остальных проблема с cors, хз что с ним делать Изучи проблему cors и поймёшь что делать. Проще говоря забей на js пользуйся другим инструментом ;) вот тебе пример https://bitcointalk.org/index.php?topic=2354914.msg24000916#msg24000916 Title: Re: wex trade api + js. Ошибка Post by: cryptobotone on June 02, 2018, 08:36:18 PM CORS реализует механизм списка разрешенных сайтов (белый список).
То есть на реальном примере: Допустим Ваш сайт это http://example.com и он посылает запрос на https://wex.nz/tapi Принцип работы следующий: 1) Ваш сайт отправлят запрос на https://wex.nz/tapi При этом все современные браузеры добавляют к запросу следующий заголовок с адресом вашего сайта Code: Origin: http://example.com Таким образом https://wex.nz/tapi узнает откуда идет запрос 2) Он сверяет адрес сайта со своим списком разрешенных сайтов и тут следующие варианты: 2.1. Если ваш адрес есть в списке разрешенных, wex.nz ответит следующим заголовком Code: Access-Control-Allow-Origin: http://example.com 2.2. Так же если разрешены запросы с любых сайтов, wex.nz ответит следующим заголовком Code: Access-Control-Allow-Origin: * В предыдущих случаях вы сможете взаимодействовать с этим сайтом. 2.3. Если список сайтов которые могут посылать запросы ограничен, и вы в него не входите то вы получите следующий заголовок Code: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. В этом случае вы не сможете взаимодействовать с этим сайтом. Возможные пути решения: 1. По опыту, бывает что в самих настройках API(на странице где вы получали ключи) нужно указать адрес сайта с которого будете посылать запросы (http://example.com) чтобы его внесли в "список разрешенных" 2. Использовать прослойку на серверной которая будет получать данные с API. К примеру: Скрипт на JS обращается к ВАШЕМУ PHP скрипту (http://example.com/script.php) который запрашивает данные у третей стороны (https://wex.nz/tapi) и возвращает данные. Тем самым проблем с CORS не возникнет. Title: Re: wex trade api + js. Ошибка Post by: marssx on June 03, 2018, 07:58:44 PM update. Код работает в IE. В остальных проблема с cors, хз что с ним делать Изучи проблему cors и поймёшь что делать. Проще говоря забей на js пользуйся другим инструментом ;) вот тебе пример https://bitcointalk.org/index.php?topic=2354914.msg24000916#msg24000916 Title: Re: wex trade api + js. Ошибка Post by: marssx on June 03, 2018, 08:03:23 PM CORS реализует механизм списка разрешенных сайтов (белый список). Спасибо за такой развернутый ответ. Понятно почему браузер блокирует такие запросы и не понятно почему векс не присылает * для аксеса. Как время будет, начну бэкенд делать и уже через него работать Title: Re: wex trade api + js. Ошибка Post by: cryptobotone on June 03, 2018, 08:53:41 PM Если нужна помощь с написанием ботов для торговли пишите на contact@cryptobotone.com или заполните форму http://cryptobotone.com/create (http://cryptobotone.com/create?utm_source=bitcointalk)
Поможем. |