HTTPURLConnection リダイレクト: プロトコルの制限
Java の HttpURLConnection は、HTTP リクエストを送信する便利な方法を提供しますが、リダイレクトを処理する場合は、特定の制限に従います。ルール。そのようなルールの 1 つは、宛先 URL が元のリクエストと同じプロトコルを使用する場合にのみリダイレクトに従うというものです。
指定された例では、元の URL は HTTP URL ("http://httpstat.us/)" です。 301")、リダイレクト URL は HTTPS URL ("https://httpstat.us") です。 HTTPS は HTTP とは異なるプロトコルとみなされているため、HttpURLConnection はこのリダイレクトに従いません。この動作は followRedirect() メソッドにハードコーディングされており、このチェックを無効にする方法はありません。
このプロトコルの制限は、セキュリティ上の懸念から生じています。 HTTPS は HTTP の安全な代替手段と考えられることが多いですが、HTTP プロトコルの観点から見ると、HTTPS は別個の馴染みのないプロトコルとして扱われます。未検証の HTTPS へのリダイレクトを許可すると、潜在的なリスクが発生します。たとえば、自動クライアント認証が構成されており、最初のリクエストが HTTP ベースである場合、HTTPS へのリダイレクトが盲目的に行われると、クライアントの ID が誤ってサーバーに公開される可能性があります。
以上がJava の HttpURLConnection が HTTP と HTTPS 間のリダイレクトに従わないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。