spring-boot使用時に以下のエラーが発生した。
java.lang.IllegalArgumentException: Invalid character found in method name [0x160x030x010x020x000x010x000x010xfc0x030x030xda0xb8Aqh0xc5,0x910xfa0xc30xc90xbf0x8a0x8f?0xf50xf80x14K0x930xf2Y0xd10xb0A%0xa30xef0x8e.Q+ ]. HTTP method names must be tokens
at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:419) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:269) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:895) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
これの原因は https://stackoverflow.com/questions/38891866/when-spring-boot-startup-throw-out-the-method-names-must-be-tokens-exception にあるように、http
のところhttps
でアクセスしてしまった時に主に発生するようだ。クライアントは暗号化されたデータを送信するが、サーバはraw dataとして処理しようとするのでエラーになる。