Gibt es eine saubere Möglichkeit, alle Versuche, zu einer HTTP: // Version einer Site zu wechseln, auf das entsprechende HTTPS: // umzuleiten?
Gibt es eine saubere Möglichkeit, alle Versuche, zu einer HTTP: // Version einer Site zu wechseln, auf das entsprechende HTTPS: // umzuleiten?
Antworten:
Ich denke, der sauberste Weg ist wie hier auf IIS-aid.com beschrieben . Es ist nur web.config. Wenn Sie also den Server wechseln, müssen Sie sich nicht alle Schritte merken, die Sie mit der benutzerdefinierten Fehlerseite 403.4 oder anderen speziellen Berechtigungen ausgefü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>
Die einfachste und sauberste Lösung, die ich gefunden habe, war zu
In den SSL-Einstellungen -> SSL erforderlich
In Fehlerseiten -> Bei 403.4 Fehler -> Zur HTTPS-Site umleiten
Unter Fehlerseiten -> Funktionseinstellungen bearbeiten ... -> Detaillierte Fehler für lokale Anforderungen und benutzerdefinierte Fehlerseiten für Remote-Anforderungen festlegen
Der Vorteil ist, dass keine zusätzlichen Codezeilen erforderlich sind. Nachteil ist, dass es Sie zu einer absoluten URL weiterleitet.
Ein sauberer Weg ändert nur das URL-Schema von http -> https und lässt alles andere gleich. Es sollte serverseitig sein, damit keine Browserprobleme auftreten.
JPPinto.com enthält schrittweise Anweisungen dazu, mit der Ausnahme, dass anstelle einer serverseitigen Umleitung Javascript (HttpRedirect.htm) verwendet wird. Aus irgendeinem Grund konnte der IE das Javascript nicht ausführen, wenn Sie die Option "Anzeigen freundlicher HTTP-Fehlermeldungen" aktiviert haben, die standardmäßig aktiviert ist. Eine andere Sache mit dem Skript ist, dass die Umleitung zum Pfad selbst in FF oder Chrome nicht funktioniert hat. Das Skript leitet immer zu root weiter. (Vielleicht habe ich etwas verpasst, weil es zum Pfad umleiten sollte.)
Aus diesen Gründen habe ich eine ASP-Seite für die Weiterleitung verwendet. Der Nachteil ist natürlich, dass dafür klassischer ASP auf dem Server aktiviert sein muss.
OpsanBlog verfügt über ein ASP-Skript und Anweisungen , die mit IIS6 gut funktionieren.
Ich hatte einige Probleme mit dieser Methode mit IIS7. Probleme mit der Benutzeroberfläche meistens, da IIS7 es wirklich leicht macht, etwas zu übersehen.
Der IIS-Manager sollte den Dateinamen im Header 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, für die eine Anmeldung erforderlich ist, 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. Tatsächlich handelt es sich also um eine saubere Weiterleitung zu Ihrer gesicherten Seite.