vida sirve servlet que para llamar example ejemplo ejecutar desde ciclo automaticamente java servlets ssl https http-protocols

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