Я настроил ng-ресурс в своем проекте AngularJS, который получает данные из REST API. Все отлично работает в средах разработки и тестирования (обе работают через http). Однако в производственной среде запросы REST не выполняются из-за ошибки No 'Access-Control-Allow-Origin' header
.
Вся страница обслуживается через https, поэтому я ожидаю, что запрос Angular также выйдет через https. Я устанавливаю ресурс с относительным путем (например, /api/), однако AngularJS, кажется, меняется с https на http.
Мои вопросы
- Что может вызвать запрос на http вместо https даже с относительными URL-адресами API?
- Есть ли хорошая документация по Angular, как обрабатывать запросы https для
$http
илиresource
? - Может ли это быть проблемой конфигурации сервера с nginx? Мне кажется, что Angular просто автоматически переключается с https на http.
Полное сообщение об ошибке
XMLHttpRequest cannot load http://www.example.com/api/data/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://www.example.com' is therefore not allowed access.
Настройка ресурсов AngularJS
.factory('Data', ['$resource',
function($resource){
return $resource('/api/data\\/', {}, {
query: {
url:'/api/data/',
method: 'GET',
isArray: true}
},
{ stripTrailingSlashes: false });
}])
Я внес в белый список домены http и https в проекте AngularJS, но это не внесло никаких изменений в запросы https.
.config(function($sceDelegateProvider) {
$sceDelegateProvider.resourceUrlWhitelist([
'self',
'http://www.example.com/**',
'https://www.example.com/**'
]);
})