Я использую ресурсы Angularjs $и $http и работаю с apis, однако из-за соображений безопасности мне нужно вызвать запрос HTTPS (работайте по протоколу HTTPS).
Как использовать https в angularjs. Спасибо вашим ответам.
Я использую ресурсы Angularjs $и $http и работаю с apis, однако из-за соображений безопасности мне нужно вызвать запрос HTTPS (работайте по протоколу HTTPS).
Как использовать https в angularjs. Спасибо вашим ответам.
Используйте $http
api, как обычно:
$http.get('/someUrl').success(successCallback);
если ваше приложение обслуживается через HTTPS, то любые вызовы, которые вы делаете, относятся к одному и тому же хосту/порту и т.д., а также через HTTPS.
Если вы используете полные URI для своих запросов, например. $http.get('http://foobar.com/somePath')
, тогда вам придется изменить URI для использования https
По какой-то причине Angular отправит все запросы по HTTP, если у вас нет ведущего/в конце ваших запросов. Даже если сама страница обслуживается через HTTPS.
Например:
$http.get('/someUrl').success(successCallback); // Request would go over HTTP even if the page is served via HTTPS
Но если вы добавите ведущее/все будет работать, как ожидалось:
$http.get('/someUrl/').success(successCallback); // This would be sent over HTTPS if the page is served via HTTPS
EDIT: Основной причиной этой проблемы является то, что Angular просматривает фактические заголовки с сервера. Если у вас есть неправильный внутренний проход http-данных через https, все равно будут http-заголовки, а Angular будет использовать их, если вы не добавите/в конце. т.е. если у вас есть NGINX, обслуживающий контент через https, но передавая запросы на Gunicorn на бэкэнд через http, у вас может возникнуть эта проблема. Способ исправления заключается в том, чтобы передать правильные заголовки в Gunicorn, поэтому ваша структура будет находиться под впечатлением от обслуживания через https. В NGINX вы можете сделать это со следующей строкой:
proxy_set_header Схема X-Forwarded-Proto $;
Недавно я столкнулся с подобными проблемами, используя Angular 1.2.26, но только при взаимодействии через балансировщик нагрузки, которые могут быть зачищены https-связанными заголовками... пока не уверены в причине. Я прибегал к этому:
uri = $location.protocol() + "://" + $location.host() + "/someUrl"
Возможно, вы захотите добавить $location.port() также при использовании нестандартного порта.