Bitcoin Forum
May 27, 2024, 10:25:17 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: wex trade api + js. Ошибка  (Read 207 times)
marssx (OP)
Full Member
***
Offline Offline

Activity: 575
Merit: 100


800 chaturbate tk on sale


View Profile
May 14, 2018, 10:21:51 PM
 #1

В общем первый раз пишу на 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>

ne0nx9
Newbie
*
Offline Offline

Activity: 21
Merit: 0


View Profile
May 18, 2018, 12:23:44 AM
 #2

а в каком контексте планируешь использовать этот код?
var key = 'тут ключ';
var secret = 'тут секрет';

явно нельзя хранить на html файле
tmtdev
Newbie
*
Offline Offline

Activity: 2
Merit: 0


View Profile
May 18, 2018, 08:57:57 AM
 #3

Твой клиент должен обращаться к твоему бэкенду. Бэкенд  в свою очередь отправляет запрос на wex и отдает ответ. Тогда проблемы с CORS запросы не будет и приватные ключ для API wex будет недоступен во фронтенде. Бэкенд на чем написан?

marssx (OP)
Full Member
***
Offline Offline

Activity: 575
Merit: 100


800 chaturbate tk on sale


View Profile
May 18, 2018, 10:19:50 AM
 #4

а в каком контексте планируешь использовать этот код?
var key = 'тут ключ';
var secret = 'тут секрет';

явно нельзя хранить на html файле
Просто хотел пощупать работу с api, никогда раньше не связывался с вебом вообще.
Про ключи знаю, это просто никидал для теста.  В реально проекте их там не будет

marssx (OP)
Full Member
***
Offline Offline

Activity: 575
Merit: 100


800 chaturbate tk on sale


View Profile
May 18, 2018, 10:23:46 AM
 #5

Твой клиент должен обращаться к твоему бэкенду. Бэкенд  в свою очередь отправляет запрос на wex и отдает ответ. Тогда проблемы с CORS запросы не будет и приватные ключ для API wex будет недоступен во фронтенде. Бэкенд на чем написан?

А зачем еще бэкенд нужен? js отправляет post запрос.
Exmo с этим кодом отрабатывает. Почти с этим.
Code:
...
xmlhttp.open('POST', 'https://api.exmo.com/v1/user_info', true);
...
var message = '?key=K-d584a0102d0072c126e464527b92797eae000000&nonce=153459043615630';
Другая часть кода полностью идентична.

ne0nx9
Newbie
*
Offline Offline

Activity: 21
Merit: 0


View Profile
May 24, 2018, 10:58:01 AM
 #6

Ну судя по вот этому, он почему-то не устанавливает Header-ы
Code:
{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.

глянь в сторону
https://github.com/arvitaly/btc-e3
marssx (OP)
Full Member
***
Offline Offline

Activity: 575
Merit: 100


800 chaturbate tk on sale


View Profile
May 24, 2018, 04:55:14 PM
 #7

Ну судя по вот этому, он почему-то не устанавливает Header-ы
Code:
{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.

глянь в сторону
https://github.com/arvitaly/btc-e3
чужой код как то с трудом перевариваю, но спасибо, попробую. Думал в сторону того что не правильно составлял хейдеры, может не то в запрос вставлял. Exmo эти хейдеры принимает нормально

marssx (OP)
Full Member
***
Offline Offline

Activity: 575
Merit: 100


800 chaturbate tk on sale


View Profile
May 24, 2018, 08:07:14 PM
 #8

update. Код работает в IE. В остальных проблема с cors, хз что с ним делать

reddish111
Sr. Member
****
Offline Offline

Activity: 1932
Merit: 349



View Profile
June 02, 2018, 04:10:01 PM
 #9

update. Код работает в IE. В остальных проблема с cors, хз что с ним делать

Изучи проблему cors и поймёшь что делать.
Проще говоря забей на js пользуйся другим инструментом  Wink вот тебе пример https://bitcointalk.org/index.php?topic=2354914.msg24000916#msg24000916

cryptobotone
Newbie
*
Offline Offline

Activity: 50
Merit: 0


View Profile WWW
June 02, 2018, 08:36:18 PM
 #10

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 не возникнет.
marssx (OP)
Full Member
***
Offline Offline

Activity: 575
Merit: 100


800 chaturbate tk on sale


View Profile
June 03, 2018, 07:58:44 PM
 #11

update. Код работает в IE. В остальных проблема с cors, хз что с ним делать

Изучи проблему cors и поймёшь что делать.
Проще говоря забей на js пользуйся другим инструментом  Wink вот тебе пример https://bitcointalk.org/index.php?topic=2354914.msg24000916#msg24000916
Спасибо. Уже забил)

marssx (OP)
Full Member
***
Offline Offline

Activity: 575
Merit: 100


800 chaturbate tk on sale


View Profile
June 03, 2018, 08:03:23 PM
 #12

CORS реализует механизм списка разрешенных сайтов (белый список).

Спасибо за такой развернутый ответ.
Понятно почему браузер блокирует такие запросы и не понятно почему векс не присылает * для аксеса.
Как время будет, начну бэкенд делать и уже через него работать

cryptobotone
Newbie
*
Offline Offline

Activity: 50
Merit: 0


View Profile WWW
June 03, 2018, 08:53:41 PM
 #13

Если нужна помощь с написанием ботов для торговли пишите на contact@cryptobotone.com или заполните форму http://cryptobotone.com/create
Поможем.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!