HTTP에서 HTTPS로의 HTTP 리디렉션으로 인해 연결 실패가 발생함
Java의 HttpURLConnection을 사용하여 HTTP에서 HTTPS로의 리디렉션을 따르려고 하면 예기치 않게 오류가 발생할 수 있습니다. 실패하다. 이 문제는 HttpURLConnection의 followRedirect() 메서드가 동일한 프로토콜 내의 리디렉션만 따르기 때문에 발생합니다.
제공된 코드에서 "http://httpstat.us/301"에 대한 요청이 이루어지며 301 Moved를 반환합니다. URL의 HTTPS 버전으로의 리디렉션을 나타내는 영구적인 응답입니다. 그러나 HttpURLConnection은 이 리디렉션을 따르지 않습니다.
왜 이런 일이 발생합니까? HTTP와 HTTPS는 HTTP 프로토콜 사양에 따라 별도의 프로토콜로 간주됩니다. HTTPS가 HTTP를 밀접하게 반영하더라도 HTTP 프레임워크 내에서 공식적인 인식이 부족합니다. 따라서 추가 구성 없이 HttpURLConnection은 보안상의 이유로 HTTPS를 별도의 프로토콜로 처리하도록 설계되었습니다.
사용자 동의 없이 HTTP와 HTTPS 간에 리디렉션을 수행하면 보안 위험이 발생할 수 있습니다. 예를 들어 HTTP 연결에 대해 클라이언트 인증이 자동으로 활성화될 수 있지만 사용자는 익명으로 탐색하려고 할 수 있습니다. 연결이 자동으로 HTTPS 리디렉션을 따르는 경우 사용자의 신원이 서버에 실수로 노출될 수 있습니다.
따라서 보안을 유지하기 위해 HttpURLConnection은 기본적으로 HTTP에서 HTTPS로의 리디렉션을 따르지 않습니다. 이 동작은 비활성화할 수 없으며 Java 프로그램에서 HTTP 리디렉션 작업을 수행할 때 이 제한 사항을 인식하는 것이 중요합니다.
위 내용은 Java의 HttpURLConnection이 HTTP에서 HTTPS로의 리디렉션을 따르지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!