CORS почтовый звонок не работает в Angularjs - PullRequest
0 голосов
/ 28 мая 2018

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

Поле заголовка запроса Авторизация не разрешена Access-Control-Allow-Headers в ответе перед полетом.

Но когда я выполняю Ajax-вызов, он работает правильно.Как HTTP post call работает в angularjs?

Ajax call

$.ajax({ 
            type: 'POST', 
            url: getAccessTokenUrl, 
            data: JSON.stringify(clintdata), 
            dataType: 'json', 
            contentType: "application/json; charset=utf-8", 
            success: function(resultData) { 
                console.log(resultData);    
            }, 
            error: function (request, status, error) { 
               console.log(status);  
            } 
        });

Angularjs HTTP call

$http({
          method: 'POST',
          url: getAccessTokenUrl,
          data: clientdata,
          headers: {
            'Authorization': undefined,
            'Auth-Token': undefined
          }
        }).then(function(res){
            console.log(res);
        }, function(err){
            console.log(err);
        });

У меня есть некоторые настройки по умолчанию.Авторизация для других REST

$http.defaults.headers.common['Content-Type'] = 'application/json;charset=utf-8;' ;
  $http.defaults.headers.common['Auth-Token'] = 'X-Requested-With';
  $http.defaults.headers.common['Authorization'] = $('#Authorization').val();

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Удалить следующую настройку

 $http.defaults.headers.common['Auth-Token'] = 'X-Requested-With';
$http.defaults.headers.common['Authorization'] = $('#Authorization').val();

Добавить заголовок авторизации динамически из Interceptor

request: function(config) {
if (angular.isUndefined(config.skipInterceptor) || !config.skipInterceptor) {
// add Authorization token
}
return config;
}

Http-вызов, подобный этому

$http.post('your url', {
skipInterceptor: true
})
0 голосов
/ 28 мая 2018

Access-Control-* заголовки заголовки ответа .Они приходят с сервера в ответ на запрос.Вы не применяете их к заголовкам вашего запроса.

Если ваш запрос jQuery работает правильно без добавления каких-либо дополнительных заголовков, ваш запрос AngularJS должен работать так же.

Эквивалентный запрос jQuery в AngularJS (включая удаление Авторизация и Auth-Token заголовки, которые вы установили через значения по умолчанию)

$http.post(getAccessTokenUrl, clientdata, {
  headers: {
    Authorization: undefined,
    'Auth-Token': undefined
  }
}).then(response => {
  console.log(response.data)
})

или длинная версия

$http({
  method: 'POST',
  url: getAccessTokenUrl,
  data: clientdata,
  headers: {
    Authorization: undefined,
    'Auth-Token': undefined
  }
}).then(...)

AngularJS по умолчанию ...

  • ПОСТАВЛЯЕТ запросы как application/json content-type
  • Сериализует свойство data в JSON
  • Ожидается ответ JSON
  • Разрешает обещание $http с объектом response, тело ответа которого анализируется как JSON в свойстве data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...