【问题标题】:when spring boot startup,throw out the "method names must be tokens" exceptionspring boot启动时,抛出“method names must be tokens”异常
【发布时间】:2016-08-11 09:03:47
【问题描述】:

spring 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

谁知道为什么抛出Invalid character found in method name. HTTP method names must be tokens异常。

【问题讨论】:

  • 没有代码和配置就很难说
  • 请添加您的代码 ;)
  • 错误似乎是你的http方法没有有效字符
  • 我在本地测试时遇到了同样的异常。问题是我请求中的 url 架构。我使用“https”,但应该使用“http”。可能会有所帮助。
  • stackoverflow.com/a/49421859/1851289 中提到的协议更改有所帮助。

标签: java spring


【解决方案1】:

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

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

【讨论】:

  • 知道如何(将 https 重定向到 http || 禁用 https || 捕获错误以至少显示有意义的错误消息)?
【解决方案2】:

另一种情况:SpringBoot和Tomcat默认使用8080或8888端口。我同时运行了一个 Jupyter Notebook,它的 url 路径中有一个令牌和一些随机字符。无论如何:当 jupyter notebook 服务器关闭时,Notebook 仍在尝试发出请求。

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

【讨论】:

  • 在对答案投反对票时,解释为什么这样做会很有帮助。这将有助于我和其他人理解问题。
【解决方案3】:

同样的问题。

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

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

你可以:

  • 更改服务器端口;

  • 找到进程并杀死它;

【讨论】:

    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 2016-09-26
      • 2019-09-19
      • 2018-10-16
      • 2019-12-01
      • 1970-01-01
      • 2020-02-05
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      相关资源
      最近更新 更多