Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   междоменный запрос через $http.get (https://javascript.ru/forum/angular/39866-mezhdomennyjj-zapros-cherez-%24http-get.html)

vgrish 15.07.2013 09:10

междоменный запрос через $http.get
 
Доброе утро. Начал проходить уроки на angular.ru и дошел до $http.get.
Пробую обратиться к другому сайту что отдает данные в json и ничего не выходит(
function SitemodxListCtrl($scope, $http) {
   $http.get('http://on-modx.ru/api?display=1&random').success(function(data) {
   $scope.sitemodx = data;
  });


ошибку выдает Request header field X-Requested-With is not allowed by Access-Control-Allow-Headers.
как с этим бороться?
спасибо!

skrudjmakdak 15.07.2013 09:19

нельзя делать запросы на другой домен. можно сделать запрос на свой сервер, а уже от своего сервера на чужой

vgrish 15.07.2013 09:47

попробовал:
создал страничку на ней запрос к другому домену, теперь пишет просто - (canceled)
и все(

vgrish 15.07.2013 10:48

только так пока заработало
<?php
$ch = curl_init();
            $cv = curl_version();
            $user_agent = "curl ${cv['version']} (${cv['host']}) libcurl/${cv['version']} ${cv['ssl_version']} zlib/${cv['libz_version']}"; 
            curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
            curl_setopt($ch, CURLOPT_ENCODING, "deflate, gzip, identity");
            curl_setopt($ch, CURLOPT_HEADER, FALSE);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
            curl_setopt($ch, CURLOPT_HTTPGET, TRUE);
            curl_setopt($ch, CURLOPT_URL, "http://on-modx.ru/api?mode=json&display=2&random&revo&evo&w=200&h=300");
            
            $respone = curl_exec($ch);
            curl_close($ch);
            return $respone;

Shitbox2 15.07.2013 22:00

Цитата:

Сообщение от skrudjmakdak (Сообщение 262324)
нельзя делать запросы на другой домен. можно сделать запрос на свой сервер, а уже от своего сервера на чужой

А если с JSONP?

vgrish 17.07.2013 15:03

Цитата:

Сообщение от Shitbox2 (Сообщение 262478)
А если с JSONP?

с JSONP тоже не вышло.
получилось как skrudjmakdak посоветовал.
p.s. Подскажите еще, а как мне загрузить в область видимости обычную html, не json? что то вроде как на angular.ru
читаю спецификацию по api , но чет не вкурил еще

то есть допустим делаю:
var myApp = angular.module('phonecat',[]).config(['$routeProvider', '$locationProvider',
    function($routeProvider, $locationProvider){
     $routeProvider.
         when('/phones', {templateUrl: 'partials/phone-list.html', controller: 'PhoneListCtrl'}).
         when('/phones/:phoneId', {templateUrl: 'partials/phone-detail1.html', controller: 'PhoneDetailCtrl'});
}
]);


function PhoneDetailCtrl($scope, $routeParams, $http) {
  $http.get('phones/' + $routeParams.phoneId + '.html').success(function(data) {
    $scope.phone = data;
    
  });
 
}

где phoneId.html у меня просто страница. И получаю на выходе страницу со всеми тегами - <p> <h1> и т.д.
или вообще так не делается?

ок! уже нашел)))

<div ng-bind-html-unsafe="html"></div>

Shitbox2 17.07.2013 21:32

«с JSONP тоже не вышло.»

В jQuery, когда не выходило с JSONP, выходило через script. Правда, в Ангуляре не пробовал

biperch 24.07.2013 10:14

Кроссдоменные запросы можно делать
на сервере куда вы посылаете запрос нужно добавить в ответ заголовок
Access-Control-Allow-Origin: *

nerv_ 24.07.2013 20:06

Цитата:

Сообщение от biperch
Кроссдоменные запросы можно делать
на сервере куда вы посылаете запрос нужно добавить в ответ заголовок
Access-Control-Allow-Origin: *

+

в доках ангуляра так и написано (CORS suppoted)

http://jsfiddle.net/ricardohbin/E3YEt/

http://better-inter.net/enabling-cors-in-angular-js/

Shitbox2 12.08.2013 00:34

У меня в начале PHP скрипта работает такая комбинация:
header('Access-Control-Allow-Origin: *'); 
header('Access-Control-Allow-Methods: POST, GET, PUT, DELETE, OPTIONS'); 
header('Access-Control-Allow-Headers: Content-Type, X-Requested-With');


Часовой пояс GMT +3, время: 01:29.