Frage

Gibt es eine saubere Möglichkeit, alle Versuche, zu einer HTTP://-Version einer Website zu gelangen, auf das HTTPS://-Äquivalent umzuleiten?

War es hilfreich?

Lösung

Ich denke, der sauberste Weg ist wie beschrieben hier auf IIS-aid.com.Es handelt sich nur um web.config. Wenn Sie also den Server wechseln, müssen Sie sich nicht alle Schritte merken, die Sie mit der benutzerdefinierten 403.4-Fehlerseite oder anderen speziellen Berechtigungen durchgeführt haben, es funktioniert einfach.

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="HTTP to HTTPS redirect" stopProcessing="true">
          <match url="(.*)" />
            <conditions>
              <add input="{HTTPS}" pattern="off" ignoreCase="true" />
            </conditions>
            <action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

Andere Tipps

Die einfachste und sauberste Lösung, die ich gefunden habe, war

  1. In den SSL-Einstellungen -> SSL erfordern

  2. In Fehlerseiten -> Bei 403.4-Fehler -> Zur HTTPS-Site weiterleiten

  3. Unter Fehlerseiten -> Funktionseinstellungen bearbeiten...-> Legen Sie detaillierte Fehler für lokale Anfragen und benutzerdefinierte Fehlerseiten für Remote-Anfragen fest

Der Vorteil besteht darin, dass keine zusätzlichen Codezeilen erforderlich sind.Der Nachteil ist, dass Sie zu einer absoluten URL weitergeleitet werden.

Ein sauberer Weg ändert nur das URL-Schema von http -> https und lässt alles andere gleich.Es sollte serverseitig sein, damit es keine Browserprobleme gibt.

JPPinto.com hat Schritt für Schritt Anweisungen darüber, wie dies geschieht, außer dass sie Javascript (HttpRedirect.htm) anstelle einer serverseitigen Umleitung verwenden.Aus irgendeinem Grund konnte ich den IE nicht dazu bringen, das Javascript auszuführen, wenn Sie „Freundliche HTTP-Fehlermeldungen anzeigen“ aktiviert haben, was standardmäßig aktiviert ist.Eine weitere Sache mit dem Skript ist, dass die Umleitung zum Pfad nicht einmal in FF oder Chrome funktionierte.Das Skript leitet immer zum Root um.(Vielleicht habe ich etwas übersehen, weil es zum Pfad umleiten sollte.)

Aus diesen Gründen habe ich für die Weiterleitung eine ASP-Seite verwendet.Der Nachteil ist natürlich, dass hierfür klassisches ASP auf dem Server aktiviert sein muss.

OpsanBlog hat eine ASP-Skript und Anweisungen die gut mit IIS6 funktionieren.

Ich hatte einige Probleme bei der Verwendung dieser Methode mit IIS7.Hauptsächlich Probleme mit der Benutzeroberfläche, da es bei IIS7 sehr leicht ist, etwas zu übersehen.

  • Zunächst müssen Sie ASP als Webserver -Funktionsfunktion installieren.
  • Zweitens funktionierte die Verwendung eines virtuellen Verzeichnisses nicht wie in IIS7 erwartet und ich habe nicht versucht, dies zu debuggen.Stattdessen stelle ich die Datei in den Stammordner der Site ein und verwendete die URL '/sSlredirect.asp' auf der Fehlerseite 403.4, um sie zu verweisen.
  • Zum Schluss der schwierigste Teil, Sie darf SSL für SSLRedirect.asp NICHT erzwingen.Andernfalls erhalten Sie einen 403.4-Fehler.Wählen Sie dazu die Datei in der „Inhaltsansicht“ von IIS7 aus und wechseln Sie zur „Funktionsansicht“, damit Sie die SSL-Einstellungen für die einzelne Datei bearbeiten und das Kontrollkästchen „SSL erforderlich“ deaktivieren können.

Der IIS-Manager sollte den Dateinamen in der Kopfzeile anzeigen.

Global.asax

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

Ich verwende klassisches ASP (Intranet) und auf Seiten, die eine Anmeldung erfordern, führt die Anmelde-Include-Datei die Umleitung durch:

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

Dies beinhaltet natürlich keine GET- oder POST-Daten.Es handelt sich also praktisch um eine saubere Weiterleitung zu Ihrer gesicherten Seite.

Ich denke, mit „sauber“ meinen Sie etwa eine 300-Weiterleitung.Konfiguration für viele Server und Sprachen Hier.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top