La redirection HTTP de HTTP vers HTTPS provoque un échec de connexion
Lorsque vous essayez de suivre une redirection de HTTP vers HTTPS à l'aide de HttpURLConnection de Java, cela peut de manière inattendue échouer. Ce problème se pose car la méthode followRedirect() de HttpURLConnection ne suit que les redirections au sein du même protocole.
Dans le code fourni, une requête est adressée à « http://httpstat.us/301 », qui renvoie un 301 Moved. Réponse permanente indiquant une redirection vers la version HTTPS de l'URL. Cependant, HttpURLConnection ne suit pas cette redirection.
Pourquoi cela se produit-il ? HTTP et HTTPS sont considérés comme des protocoles distincts par la spécification du protocole HTTP. Même si HTTPS reflète étroitement HTTP, il manque de reconnaissance officielle au sein du cadre HTTP. Par conséquent, HttpURLConnection, sans configuration supplémentaire, est conçue pour traiter HTTPS comme un protocole distinct pour des raisons de sécurité.
Suivre des redirections entre HTTP et HTTPS sans le consentement de l'utilisateur pourrait présenter des risques de sécurité. Par exemple, l'authentification client peut être activée automatiquement pour les connexions HTTP, mais l'utilisateur peut avoir l'intention de naviguer de manière anonyme. Si la connexion devait suivre automatiquement une redirection HTTPS, l'identité de l'utilisateur pourrait être révélée par inadvertance au serveur.
Par conséquent, pour maintenir la sécurité, la HttpURLConnection ne suit pas les redirections de HTTP vers HTTPS par défaut. Ce comportement ne peut pas être désactivé et il est important d'être conscient de cette limitation lorsque vous travaillez avec des redirections HTTP dans des programmes Java.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!