Si je veux donner une option pour que les utilisateurs se connectent à un site Web à l'aide de J'aimerais avoir le lien "Utiliser la connexion sécurisée" sur ma page de connexion - mais alors, comment puis-je le faire sans encadrer l'URL? p> J'aimerais pouvoir simplement faire: p> et faites-leur pointer sur Comment puis-je faire cela? p> p> https: // code> au lieu de
http: // code>, je voudrais mieux donner leur une option pour y arriver dans mon point de vue ou mon modèle.
http://example.com/login code> et
https://example.com/login code>. P>
3 Réponses :
Peut-être que vous pourriez peut-être écrire une balise url_https code> qui fait la même chose que
URL code> mais pointe vers la version HTTPS de l'URL. P>
Je n'ai pas beaucoup travaillé avec des URL sécurisées, mais j'ai travaillé un peu avec Satchmo, qui a un middleware et des utils. Le middleware vérifie simplement la clé Satchmo est sur Bitbucked ici p> J'ai également été capable de trouver des extraits pour les milieux moyens qui devraient également pouvoir vous aider à obtenir une URL de connexion sécurisée: p> Le premier est l'original, tandis que le 2e devrait être une version améliorée AB, à un moment donné, mais pourrait ne plus être le cas. Vous pouvez jeter un coup d'œil à eux. P> Utilisation de SatchMo ou de l'un des extraits de middleware, vous devriez pouvoir faire quelque chose comme P> ssl = true code> dans les paramètres de vue et permet de sécuriser la demande de cette façon. Vous n'avez probablement pas besoin de le faire ce complexe, mais vous pouvez jeter un coup d'œil à la manière dont il est mis en œuvre.
{% url login_page %}
{% url login_page SSL=1 %}
Les extraits liés sont une bonne solution complète si vous souhaitez définir certaines URL en tant que HTTPS - uniquement et que vous avez ensuite un middleware en prendre soin de là. Ils sont excédentaires si tout ce que vous essayez de faire est de créer un lien HTTPS.
Vrai, pour un seul lien seul, cela n'en vaut pas la peine. Dans ce cas, votre solution est meilleure.
Le {% URL%}} code> génère uniquement la partie de chemin de l'URL, pas la partie hôte. Cela ne génère que quelque chose comme "/ chemin / à / ici" (tout ce que vous avez à faire est de "voir la source" et que vous verrez que tout le contenu du
href code>). C'est votre navigateur qui suppose si vous êtes actuellement sur http://example.com Le lien doit également être dans http://example.com . Donc, tout ce que vous avez à faire pour générer un lien sécurisé dans votre modèle est la suivante:
<a href="https://{{ request.get_host }}{% url blah %}">
Cela a 1 désavantage cependant; Lorsque / si je déplace le site sur Diffrent domaine, ou quelque chose comme ça, les URL relatives ne se casseront pas, celle-ci le fera. Je cherchais quelque chose de plus comme demande.build_absolute_uri () fonction avec option pour remplacer http avec https, mais je suppose qu'il est préférable de la mettre en œuvre par moi-même.
Eh bien, il n'y a aucun moyen de forcer HTTPS et d'utiliser une URL relative. Édité de mentionner que vous pouvez utiliser le cadre de sites pour éviter le code de domaine.
L'option ci-dessus à l'aide de request.get_host fait essentiellement la même chose que request.get_absolute_uri et forçant https.
Curieusement, pourquoi un utilisateur voudrait-il se connecter via un HTTP lorsque HTTPS est disponible?
Parce que leur proxy ne laisse que le port 80 à travers (vu cette aberration plusieurs fois)