tomcat8 illegalargumentexception

tomcat8 - java.lang.IllegalArgumentException: se encontró un carácter no válido en el nombre del método. Los nombres de métodos HTTP deben ser tokens



(9)

Está llamando al servidor local con http : // localhost: 8080 / foo / bar. Llámalo con https : // localhost: 8080 / foo / bar. Esto resuelve el problema

Me encuentro debajo del seguimiento de la pila cuando estoy implementando mi aplicación en un entorno Apache Tomcat 8 de varios servidores. Recibo este error con frecuencia, y parece que está bloqueando el hilo de Tomcat:

INFO [http-nio-80-exec-4461] org.apache.coyote.http11.AbstractHttp11Processor.process Error parsing HTTP request header  Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.  java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens  at org.apache.coyote.http11.AbstractNioInputBuffer.parseRequestLine(AbstractNioInputBuffer.java:233)  at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1017)  at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)  at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1524)  at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1480)  at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)  at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)  at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)  at java.lang.Thread.run(Unknown Source)

¿Alguien puede indicarme cómo solucionar o reducir tal excepción? No obtengo ninguna referencia a ninguno de los archivos fuente de mi aplicación. Traté de buscar en Google, y en los enlaces que decía, está intentando acceder a la URL http a través de https, lo que parece poco probable. No recibo este error cuando la aplicación se ejecuta en una sola instancia de Tomcat 8. Solo obtengo esto en un entorno multiservidor.

También estoy compartiendo las metaetiquetas que he incrustado en cada página, si eso ayuda a identificar la causa.

<% response.setHeader("Cache-Control", "no-cache"); response.setHeader("Cache-Control", "no-store"); response.setDateHeader("Expires", 0); response.setHeader("Pragma", "no-cache"); %> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1">

También estoy usando lo siguiente en algunas páginas, que básicamente es lo mismo que el anterior:

<meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta http-equiv="Expires" content="-1" /> <meta http-equiv="Cache-Control" content="private" /> <meta http-equiv="Cache-Control" content="no-store" /> <meta http-equiv="Pragma" content="no-cache" />

Incluso si alguien me ayuda a dar una dirección a mi intento de solución de problemas, será útil, ya que actualmente no tengo idea de dónde buscar.

Gracias por adelantado.


Esta excepción puede ocurrir cuando intenta ejecutar la solicitud HTTPS del cliente en el punto final que no está habilitado para HTTPS. El cliente cifrará los datos de la solicitud cuando el servidor esté esperando datos sin procesar.


Este error se resolvió haciendo 2 cosas en el navegador Chrome:

  1. Presioné Ctrl + Shift + Delete y borré todos los datos de navegación desde el principio.
  2. Vaya a Chrome: Configuración -> Configuración avanzada -> Abrir configuración de proxy -> Propiedades de Internet, luego vaya a la ventana Contenido y haga clic en el botón Borrar estado SSL.

Este sitio tiene esta información y otras opciones también: https://www.thesslstore.com/blog/fix-err-ssl-protocol-error/


Esto suele suceder cuando está utilizando un esquema de URI que no es compatible con el servidor en el que se implementa la aplicación. Por lo tanto, es posible que desee verificar qué esquemas admite su servidor y modificar su URI solicitud en consecuencia, o puede agregar el soporte para ese esquema en su servidor. El alcance de su aplicación debería ayudarlo a decidir sobre esto.


Me sucedió cuando tenía un mismo puerto utilizado en SOCKS de túnel ssh para ejecutar Proxy en el puerto 8080 y mi servidor y mi proxy de navegador Firefox se configuraron en ese puerto y obtuve este problema.


Obtuve la misma excepción cuando probé localmente. El problema era un esquema de URL en mi solicitud.

Cambie https:// to http:// in your client url.

Probablemente ayude.


Recibí esta excepción no relacionada con ningún problema de SSL. En mi caso, el valor del encabezado Content-Length no coincidía con la longitud del cuerpo.


Recibía la misma excepción, cada vez que se cargaba una página,

NFO: Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level. java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens at org.apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:139) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1028) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748)

Descubrí que una de las URL de mi página era https en lugar de http, cuando cambié la misma, el error desapareció.


Respondiendo esta vieja pregunta (para otros que pueden ayudar)

Configurar su httpd conf correctamente resolverá el problema. Instale cualquier servidor httpd, si no tiene uno.

Listado de mi configuración aquí.

[smilyface@box002 ~]$ cat /etc/httpd/conf/httpd.conf | grep shirts | grep -v "#"


ProxyPass /shirts-service http://local.box002.com:16743/shirts-service ProxyPassReverse /shirts-service http://local.box002.com:16743/shirts-service ProxyPass /shirts http://local.box002.com:16443/shirts ProxyPassReverse /shirts http://local.box002.com:16443/shirts ... ... ...

edite el archivo como se indica arriba y luego reinicie httpd como se muestra a continuación

[smilyface@box002 ~]$ sudo service httpd restart


Y luego solicitar con https funcionará sin excepción.
¡Solicitar también con http reenviará a https ! Sin preocupaciones.