cgprakash Ответов: 3

Как разрешить "доступ-контроля-разрешить-происхождения", ошибка в в AngularJS?


Я наткнулся на ошибку при получении метаданных url-адреса с помощью Angular JS с ajax.

Заявление об ошибке:

XMLHttpRequest не может загрузиться http://www.esample.com/. нет "Контроль Доступа-Разрешить-Происхождение" заголовок присутствует на запрашиваемом ресурсе. Таким образом, исходное значение "null" не имеет доступа.



var app = angular.module('myapp', []);
  app.controller('ctrl',
  function ($scope,$http){      
      $http.get('http://example.in/')
        .success(
            function(data,status,headers,config){
            var details = [
              {title:$(data).filter('title'),
              description:$(data).filter('meta[name=description]').attr("content"),
              keywords:$(data).filter('meta[name=keywords]').attr("content"),
              image:$(data).filter('meta[name=og:image]').attr("content")},
            ];
            $scope.details;  
        })
        .error(function (data, status, headers, config) {
            $scope.error = " - Something went wrong with your code....";
        }); 
});


Что я уже пробовал:

$http.get('http://example.in/', function (res) {
              res.header("Access-Control-Allow-Origin", "*");
              res.header("Access-Control-Allow-Headers", "X-Requested-With");
})...

Ссылка: доступ только к определенному домену.

3 Ответов

Рейтинг:
1

cgprakash

Но я попробовал на своей собственной веб-странице не ограничиваться получением этих деталей, когда я попробовал то же самое с php, я получил эти детали с помощью функций curl.


F-ES Sitecore

Ваша собственная страница не ограничена, так как вы не ввели ограничений, в то время как этот сайт имеет, и вы можете использовать php и curl, так как это не ajax-вызовы, и это проблема с безопасностью ajax.

Richard Deeming

Если вы хотите задать вопрос или добавить комментарий, используйте команду "есть вопрос или комментарий?" кнопка под решением, на которое вы отвечаете.

Не публикуйте свой комментарий как новое "решение".

Рейтинг:
0

F-ES Sitecore

Сайт, к которому вы пытаетесь получить доступ, не хочет, чтобы вы обращались к нему с вашего собственного javascript, и вы ничего не можете с этим поделать.


Рейтинг:
0

Richard Deeming

Код из сообщения в блоге, на которое вы ссылаетесь, должен использоваться на удаленном сервере, который запрашивается, а не в клиенте, делающем запрос.

Ограничения кросс-происхождения существуют для того, чтобы предотвратить несанкционированные запросы вредоносного кода к удаленному ресурсу. Если бы клиент мог обойти ограничения, то они не обеспечивали бы никакой защиты, и не было бы никакого смысла иметь их.

Например, представьте, что вы вошли на сайт своего банка. Они установили некоторые файлы cookie, чтобы держать вас в системе. Без ограничений любой другой сайт, который вы посещаете, может сделать кросс-исходный запрос на сайт вашего банка, чтобы перевести деньги с вашего счета на счет хакера. Поскольку запрос был отправлен из Вашего браузера, он будет включать файлы cookie, которые позволяют вам войти в систему, и запрос будет выполнен успешно.

Решение заключается в создании Службы "прокси" на вашем сервере. Запросы, сделанные с сервера, не будут включать в себя или иметь доступ к любому из файлов cookie клиента для удаленного сайта, поэтому ограничения кросс-происхождения не применяются.

Затем ваш скрипт вызовет прокси-службу на вашем сайте,что не будет перекрестным запросом. Прокси-служба сделает сетевой запрос и вернет соответствующие результаты на страницу.


Jon McKee

+5'd, хорошо сказано! Просто хотел отметить, что CORS спасет вас только от некоторых CSRF-атак, и другие методы, такие как STP, также должны рассматриваться в зависимости от необходимости. Лист список CSRF атак чит .