Tengo un Spring MVC aplicación que se ejecuta en Tomcat8. Una vez en un día o dos puedo obtener una excepción en mi archivo de registro

15-Jun-2016 10:43:39.832 INFO [http-nio-8080-exec-50] 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 (CR or LF) found in method name
    at org.apache.coyote.http11.AbstractNioInputBuffer.parseRequestLine(AbstractNioInputBuffer.java:228)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

¿alguien tiene una idea de lo que esto podría ser?

Se ve como entrante encabezado de solicitud HTTP es incorrecto. Como el mensaje de error dice en el encabezado de la solicitud contiene prohibido carácter en el método HTTP nombre (final de línea), así solicitud analizador produce la excepción. Así que no es un problema en tu código. Puede ignorarlo o pida al remitente que compruebe la solicitud de validez.
Vagaytsev – solicitud de Web & hemos LB instalación con nginx. En el servidor se produce el error de arriba y tira Bad Gateway. scalescale.com/tips/nginx/502-bad-gateway-error-using-nginx no ayuda 🙁
Creo que, esta excepción tiene que ver más con la Configuración de SSL, como el mismo (bueno, casi similar) de la guerra de las obras en el escenario de las máquinas – en donde tenemos acceso con http – Mientras que la prueba de Producción de la instalación (con https) es donde se enfrentan a este problema. Tienes que revisar nuestra configuración de nginx. En caso de que usted haya encontrado la solución – do, házmelo saber 🙂
Hola VadOs, Es el tomcat se ejecutan en la nube de la máquina? si sí, por favor consulte – (cyber4.org/three-legged-pig/…) y (confluence.atlassian.com/confkb/…)
Chicos, ¿lograr ningún progreso?

OriginalEl autor VadOs | 2016-06-15

6 Comentarios

  1. 33

    Este error es causado por malformaciones de la solicitud HTTP.
    En la mayoría de los casos este mensaje es engañoso debido a que este error suele ocurrir cuando usted está tratando de acceder sin garantía página a través de https.
    Tomcat no sabe que la solicitud entrante es encriptada y tratando de interpretar esta petición tan simple, sin garantía de solicitud http.

    Esta es la forma en que podría buscar en los registros de:

    Estándar, adecuado solicitud HTTP (http://localhost:8080)

    Received [GET /index.html HTTP/1.1
    Host: localhost:8080
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Accept-Encoding: gzip, deflate, sdch
    Accept-Language: pl,en-US;q=0.8,en;q=0.6
    Cookie: Idea-xxxxx; JSESSIONID=3dxxxxx
    
    ] 

    Solicitud HTTPS (https://localhost:8080)

    Received [¹µHÄ;ß![email protected]<¿
                                                                                                                                    #|vFBbiø/5
    jÿ
    
                       hhttp/1.1uP
                                   
    ] 

    Como se puede ver en la segunda petición, no son desconocidos caracteres en lugar de HTTP correcta el nombre del método (por ejemplo, GET)

    Así que si tu servidor no tiene ninguna configuración de SSL y error se produce «una vez en un día o dos», entonces probablemente alguien está tratando de llegar a su sitio web a través de https (probablemente algún tipo de bot)

    Finalmente, alguien está tratando de enviar no segura pero con formato incorrecto de la llanura de la solicitud HTTP (a través de su propia aplicación – bot u otro cliente personalizado).

    ¿Este error hace que tomcat deja de funcionar ??Estoy recibiendo esta excepción muchas veces y mi tomcat es llegar detuve en el intervalo regular…
    No, esto No deja de tomcat para dejar de trabajar.
    no podía ser de robot de google ?

    OriginalEl autor Maciej Marczuk

  2. 3

    Sólo añadir también este problema con springboot.
    Yo estaba usando una dirección url HTTPS pero mi servidor local no estaba usando SSL, así que me cambié la url de HTTP y funcionó.

    OriginalEl autor Maelig

  3. 1

    Vuelva a revisar la solicitud enviada.
    Si la estación no es https habilitado, pasar la petición http.

    OriginalEl autor Sarat Chandra

  4. 1

    Yo también enfrentan el mismo problema con la Solicitud HTTP POST, El problema fue «datos JSON no fue la correcta». Yo tenía una enumeración de los atributos de la clase que estaba pasando mal (error de ortografía) en el objeto. Y me estaba poniendo de esta excepción.

    OriginalEl autor Bhupendra Kumar

  5. 1

    Me encontré con este mismo error, y puede tener absolutamente nada que ver con la configuración de Tomcat. Ella me volvía loco tratando de encontrar el error. Yo estaba sirviendo en varias aplicaciones de seis dominios con sólo uno de los dominios de la producción de la Proxy de Error 502. El ‘carácter no Válido’ mensaje se encuentra en Tomcat registro de catalina.salida:

    Apr 18, 2018 10:31:06 AM org.apache.coyote.http11.AbstractHttp11Processor process
    INFO: Error parsing HTTP request header
     Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
    java.lang.IllegalArgumentException: Invalid character (CR or LF) found in method name
            at org.apache.coyote.http11.InternalAprInputBuffer.parseRequestLine(InternalAprInputBuffer.java:177)
            at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:992)
            at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
            at org.apache.tomcat.util.net.AprEndpoint$SocketWithOptionsProcessor.run(AprEndpoint.java:2454)
            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)

    En mi caso, yo soy el envío de solicitudes para aplicaciones Tomcat de Apache httpd mediante un proxy. El proxy se utilizan directivas dentro de httpd del host virtual, normalmente configurado en /etc/httpd/conf.d/virtualhosts.conf. El proxy primera redirige ningún cifrado http solicitudes recibidas en el puerto 80 al puerto 443.

    <VirtualHost *:80>
      ServerName www.domain1.com
      ServerAlias domain1.com *.domain1.com
      Redirect permanent / https://domain1.com/
    </VirtualHost>

    La solicitud redirigida se gestiona como una normal entrante cifrado https solicitud.

    La configuración incorrecta. NO COPIAR ESTO!

      <VirtualHost *:443>
          ServerName www.domain1.com
          ServerAlias domain1.com *.domain1.com
          ProxyRequests off
          ProxyPreserveHost on
          CustomLog "/etc/httpd/logs/domain1ssl.log" "%h %l %u %t \"%r\" %>s %b"
          ErrorLog "/etc/httpd/logs/domain1ssl_error.log"
          SSLEngine on
          SSLProxyEngine on
          SSLCertificateFile /etc/pki/tls/certs/domain1.com.crt
          SSLCertificateKeyFile /etc/pki/tls/private/domain1.key
          SSLCertificateChainFile /etc/pki/tls/certs/ca-bundle-domain1.crt
          ProxyPass / https://domain1.com:8081/
          ProxyPassReverse / https://domain1.com:8081/
        </VirtualHost>

    Tenga en cuenta las dos líneas:

    ProxyPass / https://domain1.com:8081/
      ProxyPassReverse / https://domain1.com:8081/

    Las directivas están diciendo Apache para enviar la solicitud para el proceso de la escucha en el puerto 8081 como una petición cifrada. Este fue error por mi parte. El protocolo debe ser http. Tomcat no es la manipulación de cifrado, httpd, es el manejo de cifrado. Así que Tomcat está recibiendo una petición cifrada de forma no cifrada conector resultante en el ‘carácter no Válido’ error excepcionalmente bien explicado en Maciej Marczuk (https://stackoverflow.com/users/1545775/maciej-marczuk) respuesta. Muchas gracias por cluing mí en encontrar mi error tipográfico.

    El apoderado debe ser:

    ProxyPass / http://domain1.com:8081/
      ProxyPassReverse / http://domain1.com:8081/

    Espero que esto ayude a alguien.
    Saludos.

    OriginalEl autor Ted Spradley

  6. 0

    Este error puede producirse debido a mal puerto.

    Realidad, observe que si usted desea aceptar a tirar HTTPS por defecto de Tomcat puerto 8443 :
    https://localhost:8443

    al cambiar el conector y el almacén, pero todavía la captura con el 8080 en lugar de 8443

    Esta es una buena información de los hechos, pero no fue escrito de una manera que responde a la pregunta en la mano. Por favor eliminar esta respuesta y añadir un comentario a la respuesta más apropiada.
    No estoy de acuerdo. He publicado este comentario porque yo tenía exactamente el mismo error debido a la mala puerto
    Eso está bien, pero por favor, vuelva a escribir su respuesta a incluir la cuestión de alguna manera. Su respuesta también se puede leer «Aviso de que si usted desea aceptar a tirar HTTP, por defecto de Tomcat puerto es 8080» y que contiene la misma información: la información sobre los puertos por defecto. No relacionadas con la información a su problema es por qué digo que no responde a la pregunta. El hecho es correcto, pero también lo es el hecho de que diciendo FTP puerto por defecto es el 21. Hasta que muestran cómo el hecho y el problema están relacionados, no estás respondiendo a la pregunta, que están diciendo los hechos.

    OriginalEl autor hadf

Dejar respuesta

Please enter your comment!
Please enter your name here