IIS7: HTTP-> HTTPS proprement

Existe-t-il un moyen propre de redirect toutes les tentatives d’access à une version HTTP: // d’un site vers son équivalent HTTPS: //?

Je pense que la manière la plus propre est décrite ici sur IIS-aid.com . C’est web.config seulement et donc, si vous changez de serveur, vous n’avez pas à vous souvenir de toutes les étapes que vous avez parcourues avec la page d’erreur personnalisée 403.4 ou d’autres permissions spéciales.

               

La solution la plus simple et la plus propre que j’ai trouvée était de

  1. Dans les parameters SSL -> SSL requirejs

  2. Dans les pages d’erreur -> Erreur 403.4 -> Rediriger vers le site HTTPS

  3. Dans les pages d’erreur -> Modifier les parameters des fonctionnalités … -> Définir les erreurs détaillées pour les demandes locales et les pages d’erreur personnalisées pour la demande à distance

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.

Une méthode propre ne modifie que le schéma d’URL de http -> https et laisse tout le rest équivalent. Il devrait être côté serveur pour qu’il n’y ait pas de problèmes de navigateur.

JPPinto.com a des instructions étape par étape sur la façon dont cela est fait, sauf qu’ils utilisent javascript (HttpRedirect.htm) au lieu d’une redirection côté serveur. Pour une raison quelconque, je ne pouvais pas exécuter IE avec le javascript si l’option Afficher les messages d’erreur HTTP conviviaux était activée 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, parce que cela devrait redirect 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 que ASP classique soit activé sur le serveur.

OpsanBlog a un script ASP et des instructions qui fonctionnent bien avec IIS6.

J’ai eu quelques problèmes avec cette méthode avec IIS7. Les problèmes d’interface utilisateur sont principalement liés au fait qu’IIS7 permet de rater quelque chose.

  • 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, je mets le fichier dans le dossier racine du site et utilise 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 obtenez une erreur 403.4. Pour ce faire, vous devez sélectionner le fichier dans IIS7 “Affichage du contenu” et basculer vers “Affichage des fonctionnalités” pour pouvoir modifier les parameters SSL du fichier unique et désactiver la case à cocher “SSL requirejs”.

Le gestionnaire IIS doit afficher le nom du fichier dans l’en-tête.

Global.asax

 protected void Application_BeginRequest() { if (!Context.Request.Url.AbsoluteUri.Contains("localhost") && !Context.Request.IsSecureConnection) Response.Redirect(Context.Request.Url.ToSsortingng().Replace("http:", "https:")); } 

Je pense par «proprement» que vous voulez dire avec une redirection 300. Config pour beaucoup de serveurs et de langues ici .