HTTP-Umleitung von HTTP zu HTTPS verursacht Verbindungsfehler
Beim Versuch, einer Umleitung von HTTP zu HTTPS mithilfe von Javas HttpURLConnection zu folgen, kann es zu unerwarteten Ereignissen kommen scheitern. Dieses Problem entsteht, weil die followRedirect()-Methode von HttpURLConnection nur Weiterleitungen innerhalb desselben Protokolls folgt.
Im bereitgestellten Code wird eine Anfrage an „http://httpsstat.us/301“ gestellt, die eine 301-Verschiebung zurückgibt Permanente Antwort, die eine Weiterleitung zur HTTPS-Version der URL anzeigt. Allerdings folgt die HttpURLConnection dieser Weiterleitung nicht.
Warum passiert das? HTTP und HTTPS werden gemäß der HTTP-Protokollspezifikation als separate Protokolle betrachtet. Obwohl HTTPS HTTP stark widerspiegelt, fehlt ihm die offizielle Anerkennung innerhalb des HTTP-Frameworks. Folglich ist die HttpURLConnection ohne zusätzliche Konfiguration darauf ausgelegt, HTTPS aus Sicherheitsgründen als eigenständiges Protokoll zu behandeln.
Das Verfolgen von Weiterleitungen zwischen HTTP und HTTPS ohne Zustimmung des Benutzers könnte Sicherheitsrisiken darstellen. Beispielsweise könnte die Client-Authentifizierung für HTTP-Verbindungen automatisch aktiviert werden, der Benutzer möchte jedoch möglicherweise anonym surfen. Wenn die Verbindung automatisch einer HTTPS-Umleitung folgen würde, könnte die Identität des Benutzers versehentlich dem Server preisgegeben werden.
Aus Sicherheitsgründen folgt die HttpURLConnection daher standardmäßig nicht Umleitungen von HTTP zu HTTPS. Dieses Verhalten kann nicht deaktiviert werden und es ist wichtig, sich dieser Einschränkung bewusst zu sein, wenn Sie mit HTTP-Weiterleitungen in Java-Programmen arbeiten.
Das obige ist der detaillierte Inhalt vonWarum folgt Javas HttpURLConnection HTTP-zu-HTTPS-Weiterleitungen nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!