2013-12-26 2 views
4

Я использую Angular $ HTTP для запроса CORS к удаленной службе API (SmartyStreets.com). Я установил значения по умолчанию, как это хорошо документировано.AngularJS с CORS и пользовательскими заголовками

.config(['$httpProvider', function($httpProvider) { 
    $httpProvider.defaults.useXDomain = true; 
    delete $httpProvider.defaults.headers.common['X-Requested-With']; 
}]) 

Когда я делаю простой запрос без пользовательских заголовков, все работает так, как ожидалось.

// This works as expected 
$http({method: 'get', url: $scope.addr.url, headers: {}}) 

Однако мне нужно установить дополнительные пользовательские заголовки. Но настройка пользовательских заголовков нарушает запрос CORS.

// this results in the browser 404 error: 
// No 'Access-Control-Allow-Origin' header is present on the requested resource 
$http({method: 'get', url: $scope.addr.url, 
headers: {'x-standardize-only': 'true', 'x- include-invalid': 'true'}}) 

Я пытался понять это на пару дней ... застрял. Кто-нибудь знает, как решить эту проблему?

спасибо !!

+0

Какую версию углового вы используете? – jhamm

+0

Использование 1.2.6 - последняя стабильная версия. – bschulz

+0

При дальнейших устранении неполадок при настройке пользовательских заголовков я заметил в Chrome, что угловой параметр «Access-Control-Request-Headers» при попытке добавить в пользовательские заголовки с включенным CORS. – bschulz

ответ

3

Ваш сервер должен правильно ответить на запрос OPTIONS, который браузер сделает от вашего имени, чтобы определить, действительно ли запрос CORS действителен. Он должен содержать заголовок Access-Control-Allow-Headers с правильной информацией в нем. См .: https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS#Preflighted_requests

+1

Я не контролирую серверную сторону. Тем не менее, веб-служба отвечает правильными заголовками: Access-Control-Allow-Headers: * Access-Control-Allow-Methods: GET, POST, PUT Access-Control-Allow-Origin: * – bschulz

+0

Access-Control-Allow -Headers не принимает подстановочный знак. Веб-служба реализована неправильно. –

+0

Хммм ... если я вызову веб-службу, не пытаясь настроить заголовки запросов, она работает успешно. Это после настройки $ httpProvider по умолчанию для использованияXDomain. – bschulz

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