2013-06-17 3 views
2

Я пытаюсь использовать службу $ HTTP на HTTPS URL с помощью следующего кода:

var request = $http.post('https://my.custom.url/webservice', privateAttributes.requestData); 
request.success(function(data, status) { 

}).error(function(data, status) { 
    console.log('data -', data); 
    console.log('status -', status); 
}); 

my.custom.url находится на другом домене, мой angularJS, но мой веб-сервер настроен так, чтобы разрешить запрос XHR с междоменным доменом. Предполагается, что это публичный веб-сервис.

Когда запрос отправляется, обещание немедленно отклоняется, поэтому срабатывает функция error(). data - undefined, а status - 0.

На вкладке «Сеть» моего отладчика в Chrome я вижу ожидающий запрос OPTIONS, соответствующий моему вызову $http.post().

Для целей тестирования я попытался сделать тот же запрос с помощью метода jQuery $.post(), и он работал без проблем. Я думаю, что делаю что-то неправильно с сервисом $http.

Обратите внимание, что это не проблема XSRF, и если я использую HTTP-версию моего веб-сервиса, запрос будет успешным.

Благодарим за помощь.

+0

Я просто прихожу акро s этот вопрос. Вы когда-нибудь разрешали это? – Skintkingle

ответ

1

Вам может понадобиться, чтобы сказать ему, чтобы отправить печенье:

В вашей конфигурации, DI $httpProvider, а затем установить withCredentials в true:

.config(function ($routeProvider, $httpProvider) { 
    $httpProvider.defaults.withCredentials = true; 
    //rest of route code 

Информация о angularjs withCredentials:. http://docs.angularjs.org/api/ng $ HTTP

Какие ссылки на статью о мозаике: https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS?redirectlocale=en-US&redirectslug=HTTP_access_control#section_5

+0

Это не работает. Вызов $ http все еще мгновенно отклонен, и у меня все еще есть ожидающий запрос OPTIONS на вкладке «Сеть» отладчика. Однако мне удалось заставить его работать, заставляя браузер обойти запрос OPTIONS, установив правильный тип контента и отключив заголовок «X-Requested-With':' $ httpProvider.defaults.headers.common ['X- Requested-With '] = undefined; $ httpProvider.defaults.headers.post ['Content-Type'] = 'application/x-www-form-urlencoded; кодировка = UTF-8' ; ' – pdegand59

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