Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.04.2017, 16:46
Аспирант
Отправить личное сообщение для AleksSergSB Посмотреть профиль Найти все сообщения от AleksSergSB
 
Регистрация: 20.11.2016
Сообщений: 74

Пример использования API clck.ru может кто привести?
Добрый!
Хочу наладить API на clck.ru но меня систематически валит ошибка:

XMLHttpRequest cannot load https://clck.ru/--?url=https://learn...hr-crossdomain. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

var XHR = ("onload" in new XMLHttpRequest()) ? XMLHttpRequest : XDomainRequest;

var xhr = new XHR();
xhr.open('GET', 'https://clck.ru/--?url=https://learn.javascript.ru/xhr-crossdomain', true);

//xhr.onload = function() {
 // console.log( this.responseText );
//}

//xhr.onerror = function() {
//  console.log( 'Ошибка ' + this.status );
//}

xhr.send();

Я что-то не пойму как использовать этот сервис.
Читал статью на которую пытаюсь сделать короткую статью. Явного примера там нет. По моему уже все перепробовал.
Ответить с цитированием
  #2 (permalink)  
Старый 16.04.2017, 17:48
Аспирант
Отправить личное сообщение для AleksSergSB Посмотреть профиль Найти все сообщения от AleksSergSB
 
Регистрация: 20.11.2016
Сообщений: 74

Сообщение от Rise Посмотреть сообщение
AleksSergSB, это для сайта или расширения?
На своем сайте такой код вставляю.
Ответить с цитированием
  #3 (permalink)  
Старый 16.04.2017, 18:31
Аспирант
Отправить личное сообщение для AleksSergSB Посмотреть профиль Найти все сообщения от AleksSergSB
 
Регистрация: 20.11.2016
Сообщений: 74

Сообщение от Rise Посмотреть сообщение
AleksSergSB, тогда через свой сервер только, если php смотри пример с file_get_contents.
Извините, не понял, что значит только через свой сервер?
Я хотел все сделать на javascript без php.

Насколько я понимаю ошибка "No 'Access-Control-Allow-Origin' " связана с заголовками которые отклоняет сервер на который я стучусь. Но не пойму как это исправить. Api ведь открытое, чего он отклоняет...
Ответить с цитированием
  #4 (permalink)  
Старый 16.04.2017, 18:37
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

CORS для простых запросов
Ответить с цитированием
  #5 (permalink)  
Старый 16.04.2017, 19:15
Аспирант
Отправить личное сообщение для AleksSergSB Посмотреть профиль Найти все сообщения от AleksSergSB
 
Регистрация: 20.11.2016
Сообщений: 74

Сообщение от laimas Посмотреть сообщение
CORS для простых запросов
Спасибо, читал. Можно пример?
Ответить с цитированием
  #6 (permalink)  
Старый 16.04.2017, 19:21
Аспирант
Отправить личное сообщение для AleksSergSB Посмотреть профиль Найти все сообщения от AleksSergSB
 
Регистрация: 20.11.2016
Сообщений: 74

Сообщение от Rise Посмотреть сообщение
AleksSergSB, но Api не открыто для XMLHttpRequest в контексте сайта.
"Приплыли тапочки к дивану"©
В общем методами только javascript достучаться до данного API не представляется возможным?
Ответить с цитированием
  #7 (permalink)  
Старый 18.04.2017, 21:06
Аспирант
Отправить личное сообщение для AleksSergSB Посмотреть профиль Найти все сообщения от AleksSergSB
 
Регистрация: 20.11.2016
Сообщений: 74

Сообщение от Rise Посмотреть сообщение
AleksSergSB, с сайта в браузере - нет, с сайта на сервере или с расширения в браузере - да. Пример:
var url = 'https://learn.javascript.ru/xhr-crossdomain';
// ...
xhr.open('GET', '/proxy.php?url=' + encodeURIComponent(url), true);
// ...

<?php // proxy.php

$url = filter_input(INPUT_GET, "url", FILTER_VALIDATE_URL);

empty($url) and exit("INVALID_URL");

echo file_get_contents("https://clck.ru/--?url=".urlencode($url));
Спасибо!

Чтобы заработал запрос echo file_get_contents("https://clck.ru/--?url="); в котором имел наглость появится hhtpS нужно в php.ini прописать:
extension=php_openssl.dll
allow_url_fopen = On

а файл php_openssl.dll разумеется заблаговременно найти и скачать.
Иначе будет ошибка : unable to find the wrapper

Появилась другая проблемка. Функция file_get_contents(); отказывается принимать строку в которой после ?url= присутствует хотя бы один "/" вываливает сразу php_network_getaddresses: getaddrinfo failed
Весь "цимус" ушел))

Подскажите пожалуйста, есть какая альтернатива?
Ответить с цитированием
  #8 (permalink)  
Старый 18.04.2017, 21:19
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от AleksSergSB
а файл php_openssl.dll разумеется заблаговременно найти и скачать
Вообще-то данная библиотека наряду с другими вход в набор расширений для каждой конкретной версии, искать чего-то не надо.

Сообщение от AleksSergSB
Функция file_get_contents(); отказывается принимать строку в которой после ?url= присутствует хотя бы один "/"
file_get_contents не имеет к этому отношения - адреса url кодируют прежде чем отправляются, rawurlencode().
Ответить с цитированием
  #9 (permalink)  
Старый 22.04.2017, 17:09
Аспирант
Отправить личное сообщение для AleksSergSB Посмотреть профиль Найти все сообщения от AleksSergSB
 
Регистрация: 20.11.2016
Сообщений: 74

Сообщение от Rise Посмотреть сообщение
Разве пример не работает, ведь там целых три слэша 'https://learn.javascript.ru/xhr-crossdomain'?
Даа, работает. Ошибку сам допустил, нашел.

Наверное не в ту тему. Но не подскажите как потом красиво передать результат обратно в js ?
Вариант var a = '<?php echo $rez; ?>'; выдает <?php echo $rez; ?>
Ответить с цитированием
  #10 (permalink)  
Старый 22.04.2017, 18:15
Аспирант
Отправить личное сообщение для AleksSergSB Посмотреть профиль Найти все сообщения от AleksSergSB
 
Регистрация: 20.11.2016
Сообщений: 74

var xhr = new XMLHttpRequest();
  var url = 'https://learn.javascript.ru/xhr-crossdomain';
  xhr.open('GET', '/test.php?url=' + encodeURIComponent(url), true);
  xhr.send();
Честно говоря не понимаю как ловить результат..
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кто может написать JavaScript? ANTIKILLERYURA Работа 5 30.05.2011 02:30
Может кто объяснить =)? mexoboy Общие вопросы Javascript 11 19.04.2011 14:37
Кто-нибудь может сделать простой пример аякса? rusbody AJAX и COMET 1 11.03.2011 14:51
MVC vs API. Ваше мнение. B~Vladi Общие вопросы Javascript 58 19.10.2010 16:29
Не работает пример использования AJAX nuker AJAX и COMET 4 19.03.2009 18:31