#ajax #angularjs #http #twitter
#ajax #angularjs #http #Twitter
Вопрос:
При попытке получить HTML-код твита на основе идентификатора я получаю следующую ошибку:
XMLHttpRequest cannot load https://api.twitter.com/1/statuses/oembed.json?id=484587947543781376. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://app-theysoundlike.rhcloud.com' is therefore not allowed access.
Как вы можете видеть, источника нет localhost
, он находится на обычном сервере в Openshift. Я использую следующий код AngularJS для отправки запроса:
$http({
url:'https://api.twitter.com/1/statuses/oembed.json?id=' data.id,
method:"GET"
}).success(function(data){
$scope.tweetHTML = data.html;
$scope.tweetAvailable = true;
});
});
data.id
Это не проблема, потому что URL формируется правильно. Фактический запрос не выполняется.
Ответ №1:
Попробуйте использовать $ http.jsonp с url
https://api.twitter.com/1/statuses/oembed.json?id={{YOUR_ID}}amp;callback=JSON_CALLBACK
Комментарии:
1. Спасибо, я попробую это. Однако у меня есть вопрос. Должен ли я указывать имя функции в
JSON_CALLBACK
параметре. Также.. как это работает? Как Twitter вызовет функцию на моем сайте?2. JSON_CALLBACK необходим для стандартной функции обратного вызова angularjs $http JSON_CALLBACK автоматически отправляет в $ http.jsonp().success() или .fail(). Я не углубляюсь в эту технологию, возможно, эта статья сможет помочь с этим — en.wikipedia.org/wiki/JSONP
3. @strlok2010, спасибо, сегодня узнал кое-что новое. Итак, чтобы уточнить, JSON_CALLBACK — это не заполнитель для моей собственной функции, а скорее что-то, на что ссылается Angular?