подключение удаленного сервера с помощью angularjs

#angularjs

#angularjs

Вопрос:

У меня есть Restfull API (localhost: 8180), который имеет безопасную аутентификацию. Использование Angular JS http (или других сервисов) Мне нужно войти на этот сервер и получить свои данные с локального хоста: 8180/api/version /?1 (это всего лишь пример) Пожалуйста, найдите мой код ниже.

 //configure file


  app.config(['$httpProvider', function($httpProvider) {
      $httpProvider.defaults.withCredentials = true;
    }]);

    //setting cookie
    app.run(['$http', '$cookies', function($http, $cookies) {
  $http.defaults.headers.post['JSESSIONID'] = $cookies.JSESSIONID;
       }]);



         // My Controller

    $http({
     url:'http://localhost:8180',
     method:'POST',
     data: {
     username:'adminadmin',
     password:'passpass'
    },
 headers: {
 "Access-Control-Allow-Headers": "*",
 "Access-Control-Allow-Credentials": true,
 "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
 "Accept": "*/*",
 'Authorization': 'Basic adminadmin:passpass' // I guess its wrong
 }
})
.success (function(){
  console.log("Success");
  //Need to call my API here
})
.error(function(data, status, headers, config){
  console.log("Failed");
});
  

Здесь я не получаю ошибку Access-Control-Allow-Origin и Origin null
. В случае успеха мне нужно вызвать localhost:8180/api/version?1 внутри
метода успеха, используя get или post. Здесь мой сервер
localhost: 9596. Мне нужно вызвать хост 8180 с хоста 9596 и передать
данные на хост 9596.

Комментарии:

1. Читать en.wikipedia.org/wiki/Cross-origin_resource_sharing

2. вам не нужно устанавливать исходные заголовки через header, задайте их в своем API. По сути, исходные данные отклоняют незаконные запросы, поэтому я все равно не использую * .. также вам не нужен такой заголовок авторизации, если вы отправляете данные через POST…

3. localhost не будет иметь того же значения при обращении к браузеру конечного пользователя; вы уверены, что это то, что вы хотите?

4. В целях тестирования мы переносим весь дамп основного сервера на хост 8081. Если код прошел успешно, мы заменяем этот хост 8081 на исходный сайт. Но то, как исходный сайт ведет себя так же, как и 8081, также ведет себя.

5. @Habib да, в зависимости от того, какой серверный сервер вы используете, попробуйте погуглить свой сервер и настроить междоменные источники

Ответ №1:

Всякий раз, когда вы получаете ошибку перекрестного происхождения, вам нужно, как серверным ребятам, добавить некоторые заголовки, отправленные при отправке ответов обратно на запрос ajax.

Основываясь на серверной части, вам нужно использовать другой подход к внесению этого изменения в сервер:

В Java Tomcat Server: вам необходимо настроить сопоставление фильтров

Источник : http://enable-cors.org/server.html