javascript - étoile - title angular




Comment utiliser HTTPS dans AngularJS? (2)

J'utilise AngularJS, $resource & $http et travaille avec apis . Cependant, pour des raisons de sécurité, je dois effectuer une demande HTTPS (fonctionne sous le protocole HTTPS).

Comment utiliser https dans AngularJS? Merci de votre aide.


J'ai récemment rencontré des problèmes similaires avec Angular 1.2.26, mais uniquement lors de l'interaction via un équilibreur de charge - ce qui peut éliminer les en-têtes liés à https ... vous n'êtes pas encore sûr du motif. J'ai eu recours à ceci:

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

Vous voudrez peut-être ajouter $ location.port () également si vous utilisez un port non standard.


Pour une raison quelconque, Angular enverrait toutes les demandes via HTTP si vous n’aviez pas de queue / à la fin de vos demandes. Même si la page elle-même est servie via HTTPS.

Par exemple:

$http.get('/someUrl').success(successCallback);  // Request would go over HTTP even if the page is served via HTTPS

Mais si vous ajoutez un interligne / tout fonctionnera comme prévu:

$http.get('/someUrl/').success(successCallback);  // This would be sent over HTTPS if the page is served via HTTPS

EDIT: La cause principale de ce problème est que Angular examine les en-têtes réels du serveur. Si vous avez un passage interne incorrect de données http via https, il restera des en-têtes http et Angular les utilisera si vous n’ajoutez pas / à la fin. Par exemple, si vous avez un serveur NGINX servant du contenu via https, mais transmettant des demandes à Gunicorn via le serveur dorsal via http, vous pourriez avoir ce problème. Pour résoudre ce problème, vous devez transmettre les en-têtes corrects à Gunicorn. Ainsi, votre infrastructure aurait l’impression d’être servie via https. Dans NGINX, vous pouvez le faire avec la ligne suivante:

proxy_set_header X-Forwarded-Proto $ scheme;







angular-ui