Подтвердить что ты не робот

Как использовать HTTPS в AngularJS

Я использую ресурсы Angularjs $и $http и работаю с apis, однако из-за соображений безопасности мне нужно вызвать запрос HTTPS (работайте по протоколу HTTPS).

Как использовать https в angularjs. Спасибо вашим ответам.

4b9b3361

Ответ 1

Используйте $http api, как обычно:

$http.get('/someUrl').success(successCallback);

если ваше приложение обслуживается через HTTPS, то любые вызовы, которые вы делаете, относятся к одному и тому же хосту/порту и т.д., а также через HTTPS.

Если вы используете полные URI для своих запросов, например. $http.get('http://foobar.com/somePath'), тогда вам придется изменить URI для использования https

Ответ 2

По какой-то причине 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 $;

Ответ 3

Недавно я столкнулся с подобными проблемами, используя Angular 1.2.26, но только при взаимодействии через балансировщик нагрузки, которые могут быть зачищены https-связанными заголовками... пока не уверены в причине. Я прибегал к этому:

uri = $location.protocol() + "://" + $location.host() + "/someUrl"

Возможно, вы захотите добавить $location.port() также при использовании нестандартного порта.