当spring boot启动时,抛出"方法名称必须是令牌"例外

时间:2016-08-11 09:03:47

标签: java spring

春季启动启动时,抛出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

谁知道为什么要抛弃Invalid character found in method name. HTTP method names must be tokens例外。

4 个答案:

答案 0 :(得分:42)

当您尝试从端点上的客户端执行https请求时,可能会发生此异常,该请求未启用https。当服务器期望原始数据时,客户端将加密请求数据。

在您的客户端网址中将https://更改为http://。

答案 1 :(得分:3)

同样的问题。

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

我找到一个进程尝试发送包而不是Http请求到我的8888端口,所以tomcat抛出method names must be tokens例外。

你可以:

  • 更改服务器端口;

  • 找到进程并将其杀死;

答案 2 :(得分:1)

另一种情况:SpringBoot和Tomcat默认使用端口8080或8888。我有一个同时运行的Jupyter笔记本,它在其url路径中有一个标记和一些随机字符。无论如何:当jupyter笔记本服务器出现故障时,笔记本仍在尝试发出请求。

如果您遇到此错误:请检查是否有其他正在运行的应用程序正在生成Web服务器或与此类端口上的Web服务器通信。

答案 3 :(得分:1)

尝试将URL从https更改为http。