Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
ivannikov
7 лет назад

Загрузка данных со сторонних сайтов в браузере пользователя jQuery AJAX PHP

Пример проверки баланса адреса в крипто-валюте Emercoin

Как известно, применение JavaScript снижает нагрузку на сервер и "облегчает жизнь" пользователю вашего сайта так как ему не приходится при каждом действии перегружать страницу.

Все бы хорошо, но политика безопасности браузера не позволяет выполнять запросы из браузера на сторонние сайты. А в конкретном примере нам необходимо получить данные о балансе адреса с сайта https://emercoin.mintr.org/ эксплорера блокчейна Emercoin.

Решение задачи - ретранслировать запрос из браузера через наш сайт на сайт эксплорера. Сайт в ответ возвращает данные в формате json. На сайте располагаем php файл который принимает запрос от браузера методом POST. Если вам необходимо декодировать данные из json, то раскомментируйте строку #$out=json_decode($out, true);

Код ретранслятора запросов repeater.php

<?php

if ($_POST['repeat']) {

if( $curl = curl_init() ) {

curl_setopt($curl, CURLOPT_URL, "{$_POST['repeat']}");

curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);

$out = curl_exec($curl);

#$out=json_decode($out, true);

print_r ($out);

curl_close($curl);

}

}

?>

Страница balance.html с javascript. Скрипт обращается к нашему повторителю на сайте методом POST, передавая запрос. Повторитель выполняет запрос, получает ответ и возвращает его скрипту в браузере пользователя. Скрипт вставляете данные в элементы с соответствующими id.

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Language" content="ru">

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

<title>Баланс Emercoin</title>

</head>

<body>


<div id = "emercoin">

<p>Emercoin Address: <span id = "emer_address">emer_address</span><br>

Emercoin Balance: <span id = "emer_balance">emer_balance</span> EMC</p>

</div>


<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<script>

var emc = $.ajax({

type: "post",

data: {'repeat':'https://emercoin.mintr.org/api/address/balance/EJQj4fvvnA9AnzLG4Q92ierq7eWRQK1iwh'},

url: '/repeater.php',

async: true,

dataType: 'json',

success: function(data){

alert('Прибыли данные: Emercoin');

$('#emer_address').html(data['address']);

$('#emer_balance').html(data['balance']);

}

}).responseText;

</script>

</body>

</html>

Рецепт проверен, работает. Модифицируем и пользуемся:)

Помним, что прямая ретрансляция запроса может доставить вам неприятности, если пользователь решит посмотреть ваш javascript код и использовать повторитель в своих интересах. Для минимизации угрозы передавайте только идентификатор запроса, по которому скрипт php выполнит необходимый запрос, а также аутентификацию пользователей.

_____

P.S.

Дьявол кроется в деталях.


7
1.188 GOLOS
На Golos с June 2017
Комментарии (1)
Сортировать по:
Сначала старые