Comment forcer l'utilisation de SSL pour certaines URL de mon application Django?
Je veux être sûr que, pour certaines URL de mon site web, SSL sera utilisé.
J'ai vu beaucoup de réponse déjà sur DONC.
La Force de rediriger le SSL pour toutes les pages à l'exception d'une
Donc je pense que je vais utiliser mod_rewrite
.
Ma question est plus sur la façon de configurer le Hôte Virtuel mon Application Django sur HTTP
et plus HTTPS
sans problèmes. Je suis à l'aide de WSGI
.
Est-ce un problème de simplement dupliquer la configuration sur *:443
et plus *:80
?
Que dois-je faire pour avoir la meilleure configuration?
source d'informationauteur Natim | 2009-10-10
Vous devez vous connecter pour publier un commentaire.
Si par WSGI vous fait dire Apache/mod_wsgi, alors, bien que monté WSGI applications normalement se faire dans leur propre sous-interprètes, la 80/443 split est un cas particulier et même si dans différents VirtualHost tant que point de montage pour WSGIScriptAlias, et le serveur sont les mêmes, ils seront fusionnés.
Ce sera le cas pour le mode démon, mais avec daemon mode, vous devez définir qu'un seul démon groupe de processus au premier VirtualHost définition et puis il suffit de se référer à qui de la fois avec WSGIProcessGroup.
La WSGIProcessGroup ne peut atteindre à travers comme à VirtualHost pour le même ServerName.
Django fournit un is_secure() méthode pour déterminer si une demande est faite via le protocole HTTPS qui dérive de WSGI variable avec la demande de l'appelé " wsgi.url_scheme", qui est défini par mod_wsgi.
Donc, vous auriez un seul Django WSGI fichier de script et le fichier de paramètres. Vous avez juste besoin de dupliquer l'application de montage de decsribed Apache/mod_wsgi de configuration.
Outre l'utilisation de mod_rewrite, vous pouvez également utiliser Django pour contrôler le SSL redirections.
Voici une version modifiée d'un middleware de la Satchmo Projet. J'ai tendance à aimer cette méthode mieux que mod_rewrite car il est plus facile à gérer.
Pour l'utiliser, pass 'SSL':True dans votre url de la conf:
Voici le middleware code:
Voici un point de vue décorateur que vous pouvez appliquer à la vue qui devrait avoir HTTPS.
Nous avons utilisé une simple middleware pour vérifier les url dans une liste de base des url qui doit être en mode HTTPS, tous les autres sont obligés de mode HTTP. Le gros inconvénient ici est que tout publier des données peuvent être perdues, sauf si vous prenez des précautions supplémentaires (il n'a pas d'importance dans notre cas). Nous faisions cela sur les pages que nécessaire numéros de carte de crédit et assimilés, de sorte que dès qu'ils étaient dans ce pipeline, nous contraint à HTTPS.