2016-06-15 12 views
16

Ho un'applicazione Spring MVC in esecuzione su Tomcat8. Una volta in un giorno o due ottengo un'eccezione nel mio file di registrojava.lang.IllegalArgumentException: Carattere non valido (CR o LF) trovato nel nome del metodo

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) 

qualcuno ha idea di cosa potrebbe essere?

+1

Sembra che l'intestazione della richiesta HTTP in ingresso non sia corretta. Come ti dice il messaggio di errore, l'intestazione della richiesta contiene caratteri vietati nel nome del metodo HTTP (fine riga), quindi il parser della richiesta non riesce con eccezione. Quindi non è un problema nel tuo codice. Puoi ignorarlo o chiedere al mittente di verificare la validità della richiesta. –

+0

@Vladimir Vagaytsev - la richiesta è da Web e abbiamo l'installazione LB con nginx. Sul server genera l'errore sopra riportato e genera Bad Gateway. scalescale.com/tips/nginx/502-bad-gateway-error-using-nginx non ha aiutato :( –

+0

Credo che questa eccezione debba fare di più con il Setup SSL, come la stessa (beh, quasi simile) guerra lavora su macchine per palcoscenici - a cui accediamo con http - Considerando che il setup di test di produzione (usando https) è il punto in cui ci troviamo di fronte a questo problema, dobbiamo controllare la nostra configurazione di nginx.Nel caso in cui tu abbia trovato la correzione - fai, fammi sapere :) –

risposta

27

Questo errore è causato da una richiesta HTTP non valida. Nella maggior parte dei casi questo messaggio è fuorviante perché questo errore si verifica in genere quando si tenta di accedere alla pagina non protetta tramite https. Tomcat non sa che la richiesta in arrivo è crittografata e sta tentando di interpretare questa richiesta come richiesta HTTP non protetta e non protetta.

questo è come potrebbe apparire nel log:

standard, richiesta corretta 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 

] 

richiesta HTTPS (https://localhost:8080)

Received [¹µHÄ;ß[email protected]<¿ 
                                   #|vFBb-Ëiø/5 
jÿ 

        hhttp/1.1uP 
           
] 

Come puoi vedere e in seconda richiesta, ci sono caratteri sconosciuti invece del nome corretto del metodo HTTP (ad es. GET)

Quindi, se il server non ha una configurazione SSL e l'errore si verifica "una volta in un giorno o due", allora probabilmente qualcuno sta cercando di raggiungere il tuo sito web attraverso https (probabilmente un qualche tipo di bot)

Alla fine qualcuno sta tentando di inviare una richiesta HTTP non protetta ma malformata (tramite la propria applicazione - bot o altro client personalizzato).

+1

Questo errore fa sì che tomcat smetta di funzionare? Sto ottenendo questa eccezione molte volte e il mio tomcat viene interrotto a intervalli regolari ... – KJEjava48

+0

No, questo non consente a Tomcat di smettere di funzionare. – ldevp

+0

potrebbe essere google bot? – shareef

2

Basta aggiungere questo problema anche con springboot. Stavo usando un URL HTTPS ma il mio server locale non stava usando SSL, quindi ho cambiato l'URL in HTTP e ha funzionato.

0

Questo errore può verificarsi a causa di una porta errata.

In realtà, notare che se si desidera accettare il tiro HTTPS, di default la porta Tomcat è 8443: https://localhost:8443

+0

Questa è una buona informazione fattuale, ma non è stata scritta in un modo che risponda alla domanda in questione. Si prega di cancellare questa risposta e aggiungerla come commento alla risposta più appropriata. –

+0

Non sono d'accordo. Ho postato questo commento perché ho avuto esattamente lo stesso errore a causa della porta errata – hadf

+0

Va bene, ma per favore riscrivi la tua risposta per includere la domanda in qualche modo. La risposta potrebbe anche essere letta "Si noti che se si desidera accettare l'invio HTTP, la porta Tomcat predefinita è 8080" e conterrebbe le stesse informazioni: informazioni sulle porte predefinite. Non mettere in relazione queste informazioni con il suo problema è perché dico che non risponde alla domanda. Il fatto è corretto, ma lo è anche il fatto che dire che la porta predefinita dell'FTP è 21. Finché non mostri come il fatto e il problema sono correlati, non stai rispondendo alla domanda, stai solo dicendo fatti. –

0

Controllare di nuovo la richiesta inviata. Se l'endpoint non è abilitato per https, passare la richiesta con http.

0

Ho anche affrontato lo stesso problema con HTTP POST Request- Il problema era "I dati JSON non erano corretti". Ho avuto un attributo enum in classe che stavo passando male (errore di ortografia) in oggetto. E stavo ottenendo questa eccezione.

Problemi correlati