java - sirve - ¿Cómo puedo saber si la solicitud al servlet se ejecutó mediante HTTP o HTTPS?
que es un servlet y para que sirve (4)
No puede depender de manera confiable de los números de puerto.
Pero puedes depender del esquema:
Use: request.getScheme() para ver si es https
.
Si es así, entonces es una conexión segura.
Creo que esto debería funcionar independientemente de la versión de Tomcat
Escribí un servlet en Java y me gustaría saber si la solicitud a ese servlet se ejecutó mediante HTTP o HTTPS.
Pensé que puedo usar request.getProtocol()
pero devuelve HTTP / 1.1 en ambos métodos.
¿Algunas ideas?
https y http se ejecuta en diferentes puertos. Para que pueda obtener el puerto de la solicitud y saber de qué puerto proviene la solicitud y para que pueda conocer el protocolo. int port = request.getServerPort ();
isSecure . Asegúrese de verificar los métodos heredados.
HttpSerlvetRequest.isSecure () es la respuesta. El ServletContainer es responsable de devolver verdadero en los siguientes casos:
- Si ServletContainer puede aceptar solicitudes en https.
- Si hay un LoadBalancer frente a ServletContainer. Y, LoadBlancer recibió la solicitud en https y la envió a ServletContainer en http simple . En este caso, LoadBalancer envía el encabezado X-SSL-Secure: true al ServletContainer, que debe cumplirse.
El contenedor también debe hacer que estos atributos de solicitud estén disponibles cuando la solicitud se recibe en https :
- javax.servlet.http.sslsessionid
- javax.servlet.request.key_size
- javax.servlet.request.X509Certificate