Si vous êtes sur IIS 7 et sur R2 voici un guide qui fonctionne et le plus "propre"
Ujwal Parker
Réponses:
177
Je pense que la manière la plus propre est celle décrite ici sur IIS-aid.com . C'est web.config uniquement et donc si vous changez de serveur, vous n'avez pas à vous souvenir de toutes les étapes que vous avez suivies avec la page d'erreur personnalisée 403.4 ou d'autres autorisations spéciales, cela fonctionne simplement.
<configuration><system.webServer><rewrite><rules><rulename="HTTP to HTTPS redirect"stopProcessing="true"><matchurl="(.*)"/><conditions><addinput="{HTTPS}"pattern="off"ignoreCase="true"/></conditions><actiontype="Redirect"redirectType="Permanent"url="https://{HTTP_HOST}/{R:1}"/></rule></rules></rewrite></system.webServer></configuration>
Cela a fonctionné pour moi, à l'exception du fait que j'ai dû modifier l'URL de redirection vers https: // {HTTP_HOST} {REQUEST_URI}
Andrew S
6
Cela a également fonctionné pour moi. J'ai dû ajouter l'application que j'exécutais sous ... localhost / app1 => http: // {HTTP_HOST} / app1 / {R: 1}
RealSollyM
15
Pour toute personne qui n'a pas encore de section de réécriture, placez les règles dans les sections suivantes du web.config: <system.webServer><rewrite> <rules> ... </rules> </rewrite> </ system .webServer>
raider33
16
assurez-vous que le module de réécriture d'URL Microsoft est installé sur le serveur IIS
La solution la plus simple et la plus propre que j'ai trouvée était de
Dans les paramètres SSL -> exiger SSL
Dans les pages d'erreur -> Sur l'erreur 403.4 -> Redirection vers le site HTTPS
Dans les pages d'erreur -> Modifier les paramètres des fonctionnalités ... -> Définir les erreurs détaillées pour les demandes locales et les pages d'erreur personnalisées pour les demandes distantes
L'avantage est qu'il ne nécessite aucune ligne de code supplémentaire. L'inconvénient est qu'il vous redirige vers une URL absolue.
fonctionne parfaitement (sur IIS 8.5 / 2012 R2). et pas de bricolage avec le web.config
schmendrick
Pourriez-vous s'il vous plaît donner un exemple de cet inconvénient? Dans quelles circonstances cela arriverait-il et pourquoi est-ce une chose négative? Si vous pouviez l'ajouter à votre réponse, ce serait formidable. Merci beaucoup!
Marcos Dimitrio
2
@MarcosDimitrio Je ne suis pas sûr car c'était il y a si longtemps. mais je crois que quand je voulais dire qu'il vous redirige vers une URL absolue, je voulais dire une "URL de base". Par exemple "http": //mywebsite.com/hellokitty serait redirigé vers "https": //mywebsite.com perdant ainsi certaines informations de chemin, cela briserait chaque lien existant avec des informations de chemin supplémentaires.
ColacX
5
Une manière propre ne change que le schéma d'URL de http -> https et laisse tout le reste équivalent. Il doit être côté serveur afin qu'il n'y ait pas de problèmes de navigateur.
JPPinto.com a des instructions étape par étape sur la façon de procéder, sauf qu'ils utilisent javascript (HttpRedirect.htm) au lieu d'une redirection côté serveur. Pour une raison quelconque, je n'ai pas pu obtenir IE exécuter le javascript si vous avez activé `` Afficher les messages d'erreur HTTP conviviaux '', ce qui est activé par défaut. Une autre chose avec le script est que la redirection vers le chemin ne fonctionnait pas même dans FF ou Chrome. Le script redirige toujours vers root. (J'ai peut-être manqué quelque chose, car il devrait rediriger vers le chemin.)
Pour ces raisons, j'ai utilisé une page ASP pour la redirection. L'inconvénient est bien sûr que cela nécessite l'activation de l'ASP classique sur le serveur.
J'ai eu quelques problèmes en utilisant cette méthode avec IIS7. L'interface utilisateur pose principalement des problèmes, car IIS7 permet de rater quelque chose très facilement.
Tout d'abord, vous devez installer ASP en tant que fonctionnalité de rôle de serveur Web.
Deuxièmement, l'utilisation d'un répertoire virtuel ne fonctionnait pas comme prévu dans IIS7 et je n'ai pas essayé de déboguer cela. Au lieu de cela, j'ai mis le fichier dans le dossier racine du site et utilisé l'url '/SSLRedirect.asp' dans la page d'erreur 403.4 pour le référencer.
Enfin, la partie la plus délicate, vous ne devez PAS appliquer SSL pour SSLRedirect.asp . Sinon, vous obtiendrez une erreur 403.4. Pour ce faire, sélectionnez le fichier dans IIS7 «Affichage du contenu» et passez à «Affichage des fonctionnalités» afin de pouvoir modifier les paramètres SSL pour le fichier unique et désactiver la case à cocher «Exiger SSL».
Le gestionnaire IIS doit afficher le nom du fichier dans l'en-tête.
Les instructions liées sur JPPinto.com ont été mises à jour pour souligner que cela ne fonctionne pas sur IIS 7.5 ou R2. Ils disent que vous obtiendrez une violation de verrouillage en raison des changements de sécurité dans les nouvelles versions d'IIS. Ils suggèrent d'utiliser la méthode URL Rewrite 2.0 à la place (approche similaire à la réponse de @toxaq).
Je peux facilement contourner cette redirection en mettant "localhost" quelque part dans l'URI, par exemple la chaîne de requête yourdomain.com?localhost=true Je suggérerais plutôt de vérifier la propriété Request.Url.Host
Aidy J
0
J'utilise asp classique (intranet) et sur les pages qui nécessitent une connexion, le fichier d'inclusion de connexion effectue la redirection:
if Request.ServerVariables("SERVER_PORT_SECURE") <> "1" or Request.ServerVariables("HTTPS") <> "on" then
Response.Redirect "https://" & Request.ServerVariables("SERVER_NAME") & Request.ServerVariables("URL")
end if
Cela n'inclut bien sûr pas les données GET ou POST. Donc, en fait, c'est une redirection propre vers votre page sécurisée.
Réponses:
Je pense que la manière la plus propre est celle décrite ici sur IIS-aid.com . C'est web.config uniquement et donc si vous changez de serveur, vous n'avez pas à vous souvenir de toutes les étapes que vous avez suivies avec la page d'erreur personnalisée 403.4 ou d'autres autorisations spéciales, cela fonctionne simplement.
la source
La solution la plus simple et la plus propre que j'ai trouvée était de
Dans les paramètres SSL -> exiger SSL
Dans les pages d'erreur -> Sur l'erreur 403.4 -> Redirection vers le site HTTPS
Dans les pages d'erreur -> Modifier les paramètres des fonctionnalités ... -> Définir les erreurs détaillées pour les demandes locales et les pages d'erreur personnalisées pour les demandes distantes
L'avantage est qu'il ne nécessite aucune ligne de code supplémentaire. L'inconvénient est qu'il vous redirige vers une URL absolue.
la source
Une manière propre ne change que le schéma d'URL de http -> https et laisse tout le reste équivalent. Il doit être côté serveur afin qu'il n'y ait pas de problèmes de navigateur.
JPPinto.com a des instructions étape par étape sur la façon de procéder, sauf qu'ils utilisent javascript (HttpRedirect.htm) au lieu d'une redirection côté serveur. Pour une raison quelconque, je n'ai pas pu obtenir IE exécuter le javascript si vous avez activé `` Afficher les messages d'erreur HTTP conviviaux '', ce qui est activé par défaut. Une autre chose avec le script est que la redirection vers le chemin ne fonctionnait pas même dans FF ou Chrome. Le script redirige toujours vers root. (J'ai peut-être manqué quelque chose, car il devrait rediriger vers le chemin.)
Pour ces raisons, j'ai utilisé une page ASP pour la redirection. L'inconvénient est bien sûr que cela nécessite l'activation de l'ASP classique sur le serveur.
OpsanBlog a un script ASP et des instructions qui fonctionnent bien avec IIS6.
J'ai eu quelques problèmes en utilisant cette méthode avec IIS7. L'interface utilisateur pose principalement des problèmes, car IIS7 permet de rater quelque chose très facilement.
Le gestionnaire IIS doit afficher le nom du fichier dans l'en-tête.
la source
Global.asax
la source
J'utilise asp classique (intranet) et sur les pages qui nécessitent une connexion, le fichier d'inclusion de connexion effectue la redirection:
Cela n'inclut bien sûr pas les données GET ou POST. Donc, en fait, c'est une redirection propre vers votre page sécurisée.
la source
Je pense que par «proprement», vous voulez dire comme avec une redirection 300. Config pour beaucoup de serveurs et de langues ici .
la source