ProgramingTip

서블릿에 대한 요청이 HTTP 또는 HTTPS를 사용하여 실행 어떻게 알 수 있습니까?

bestdevel 2020. 11. 14. 10:54
반응형

서블릿에 대한 요청이 HTTP 또는 HTTPS를 사용하여 실행 어떻게 알 수 있습니까?


Java로 서블릿을 작성하고 해당 서블릿에 대한 요청이 HTTP 또는 HTTPS를 사용하여 실행하고 싶습니다.

모두 사용할 수 있지만 request.getProtocol()두 방법에서 HTTP / 1.1을 반환합니다.

어떤 아이디어?


HttpSerlvetRequest.isSecure () 입니다. ServletContainer는 다음과 같은 경우에 true를 반환합니다.

  • ServletContainer가 자체적으로 https에서 요청을 수락 할 수있는 경우입니다.
  • ServletContainer가 LoadBalancer가있는 경우입니다. 그리고 LoadBlancer는 HTTPS에 , 대한 요청 고객을 받고 또는 일반 HTTP 의 ServletContainer 동일한에 요청 고객을 전달했습니다 . 이 경우 LoadBalancer는 X-SSL-Secure : true 헤더를 ServletContainer로 전송합니다.

컨테이너는 또한 https에서 수신 될 때이 요청 속성을 사용할 수 있습니다.

  • javax.servlet.http.sslsessionid
  • javax.servlet.request.key_size
  • javax.servlet.request.X509Certificate

포트 번호에 의존 할 수 없습니다.
그러나 계획에 의존 할 수 있습니다.

사용 : request.getScheme () 인지 확인합니다 https.

보안 연결입니다.

Tomcat 버전에 관계없이 작동해야한다고 생각합니다.


isSecure . 상속 된 메서드를 확인하십시오.


https와 http는 다른 포트에서 실행됩니다. 따라서 요청에서 포트를 가져오고 요청이 어느 포트에서 왔는지 알 수 있으므로 프로토콜을 알 수 있습니다. int 포트 = request.getServerPort ();

참고 URL : https://stackoverflow.com/questions/8200853/how-can-i-know-if-the-request-to-the-servlet-was-executed-using-http-or-https

반응형