2015-06-01 1 views
0

У меня есть запрос по запросу POST в Angle (1.4.0), который работает с использованием Chrome (43+) и Firefox (37+) после удаления Content-Type заголовок.Угловая междоменная почта: сбой с использованием некоторых браузеров

Но это не удается при использовании Safari или Safari/Chrome на iPhone/iPad. сообщение об ошибке, то есть:

Не удалось загрузить ресурс: Запрос поле заголовка Content-Type не допускается Access-Control-Allow-Headers.

Но в журнале я вижу:

[Log] original httpProvider defaults (app.js, line 6) 
[Log] Content-Type: application/json;charset=utf-8 (app.js, line 7) 
[Log] updated httpProvider defaults (app.js, line 13) 
[Log] Content-Type: undefined (app.js, line 14) 
[Error] Failed to load resource: Request header field Content-Type is not allowed by Access-Control-Allow-Headers. (search, line 0) 
... 
headers: Object 
    Accept: "application/json, text/plain, */*" 

Итак: сообщение об ошибке, даже если нет Content-Type в заголовке.

Любые предложения?

Отрывок:

var app = angular.module('myApp', []); 

app.config(['$httpProvider', function($httpProvider) { 
    console.log("original httpProvider defaults"); 
    console.log("Content-Type:", $httpProvider.defaults.headers.post['Content-Type']); 

    //$httpProvider.defaults.useXDomain = true; 
    //delete $httpProvider.defaults.headers.common["X-Requested-With"]; 
    delete $httpProvider.defaults.headers.post['Content-Type']; 

    console.log("updated httpProvider defaults"); 
    console.log("Content-Type:", $httpProvider.defaults.headers.post['Content-Type']); 
}]); 

app.controller('testController', function($scope, $http, $sce) { 
    console.log("testController"); 

    $scope.url = "http://.../v0/search"; 
    $scope.data = { "query":"auto" }; 

    $scope.testPost = function() { 
     $http.post($scope.url, $scope.data). 
      success(function(data, status, headers, config) { 
       console.log("success"); 
       console.log(data, status, headers, config); 
      }). 
      error(function(data, status, headers, config) { 
       console.log("error"); 
       console.log(data, status, headers, config); 
      }); 
    } 
}); 

ответ

0

Извините, что побеспокоил вас, это был вопрос сервера после того, как все. Поставщик API обновил свой API, и теперь он работает.

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

Смежные вопросы