spring 当 Boot 启动时,它会抛出“方法名必须是标记”异常

e0uiprwp  于 2023-03-28  发布在  Spring
关注(0)|答案(5)|浏览(161)

当Sping Boot 启动时,它会抛出method names must be tokens异常

2016-08-11 16:53:54.499  INFO 14212 --- [0.1-8888-exec-1] o.apache.coyote.http11.Http11Processor   : 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.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:462) ~[tomcat-embed-core-8.5.4.jar!/:8.5.4]
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:994) ~[tomcat-embed-core-8.5.4.jar!/:8.5.4]
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.4.jar!/:8.5.4]
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:785) [tomcat-embed-core-8.5.4.jar!/:8.5.4]
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1425) [tomcat-embed-core-8.5.4.jar!/:8.5.4]
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.4.jar!/:8.5.4]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_72]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_72]
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.4.jar!/:8.5.4]
        at java.lang.Thread.run(Thread.java:745) [na:1.8.0_72]

2016-08-11 16:53:58.885  INFO 14212 --- [0.1-8888-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring FrameworkServlet 'dispatcherServlet'
2016-08-11 16:53:58.888  INFO 14212 --- [0.1-8888-exec-2] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization started
2016-08-11 16:53:58.922  INFO 14212 --- [0.1-8888-exec-2] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization completed in 30 ms
11111111-chinadfadf-xxxxxxxx@121.com

有人知道它为什么抛出这个异常吗?

emeijp43

emeijp431#

当您尝试在未启用https的端点上执行来自客户端的https请求时,可能会发生此异常。当服务器需要原始数据时,客户端将加密请求数据。
将客户端URL中的https://更改为http://。

a2mppw5e

a2mppw5e2#

另一例:SpringBoot和Tomcat默认使用端口8080或8888。我同时运行了一个Jupyter Notebook,它的url路径中有一个令牌和一些随机字符。无论如何:当jupyter notebook服务器关闭时,Notebook仍在尝试发出请求。
如果遇到此错误:检查是否有另一个应用程序正在运行,该应用程序正在生成Web服务器或与此类端口上的Web服务器通信。

i34xakig

i34xakig3#

同样的问题。

cmd -> netstat -ano then find the port your have used(e.g 8888)

我发现一个进程尝试发送包不是Http请求到我的8888端口,所以tomcat抛出method names must be tokens异常。
您可以:

  • 更改服务器端口;
  • 找到进程并杀死它;
k10s72fa

k10s72fa4#

在我的例子中,它是当Tomcat创建HTTPS请求时没有安装SSL证书。为了解决这个问题,我将请求中的模式更改为HTTP。或者您应该创建SSL证书以使用HTTPS。

bgibtngc

bgibtngc5#

你必须有添加https代替http我也得到同样的错误与下面的代码

@RestController
public class MyController {
    @GetMapping("/myobject")
    public MyObject getMyObject() {
        return new MyObject("John Doe", true, 42);
    }
}

这是我用https

得到的
IDE中的堆栈跟踪也出错

2023-03-22T03:32:56.767+05:30  INFO 21684 --- [nio-8080-exec-2] o.apache.coyote.http11.Http11Processor   : Error parsing HTTP request header
 Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level.

java.lang.IllegalArgumentException: Invalid character found in method name [0x160x030x010x000xf70x010x000x000xf30x030x030x950xa2*tU0x050x1a0xe20xf5]0x1c0x8f0x070x160x0b9q10xa9d0x800xc50xdau0xfd0x8d*0xe00xec0xe80xd3C ]. HTTP method names must be tokens
    at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:419) ~[tomcat-embed-core-10.1.5.jar:10.1.5]
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:272) ~[tomcat-embed-core-10.1.5.jar:10.1.5]
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-10.1.5.jar:10.1.5]
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:859) ~[tomcat-embed-core-10.1.5.jar:10.1.5]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1734) ~[tomcat-embed-core-10.1.5.jar:10.1.5]
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.5.jar:10.1.5]
    at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-10.1.5.jar:10.1.5]
    at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.5.jar:10.1.5]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-10.1.5.jar:10.1.5]
    at java.base/java.lang.Thread.run(Thread.java:1589) ~[na:na]

这是我用http only

得到的

相关问题