windows下tomcat启动但无法访问localhost的问题
- 环境变量一切正常
- 127.0.0.1可以访问,内网ip可以访问
不用改源码,不用改项目,不用重装,不用改端口!
start
访问错误:
报错内容
logs
22-Nov-2022 17:19:26.972 信息 [http-nio-8080-exec-1] org.apache.coyote.http11.Http11Processor.service 解析 HTTP 请求 header 错误
注意:HTTP请求解析错误的进一步发生将记录在DEBUG级别。
java.lang.IllegalArgumentException: 在方法名称[0x160x030x010x020x000x010x000x010xfc0x030x030xf10x150x81/0xb9?0x990x8fsn40xbf?0x010x1eU3u0xbd0xcb0xe4q0xbeu0xb70x180xccJj0xc50xe70xde ]中发现无效的字符串, HTTP 方法名必须是有效的符号.
at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:434)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:513)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:885)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1693)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
以及
终端报错的截图
问题核心
org.apache.coyote.http11.Http11Processor.service 解析 HTTP 请求 header 错误
注意:HTTP请求解析错误的进一步发生将记录在DEBUG级别。
java.lang.IllegalArgumentException: 在方法名称[0x160x030x010x020x000x010x000x010xfc0x030x030xf10x150x81/0xb9?0x990x8fsn40xbf?0x010x1eU3u0xbd0xcb0xe4q0xbeu0xb70x180xccJj0xc50xe70xde ]中发现无效的字符串, HTTP 方法名必须是有效的符号.
使用127.0.0.1:8080访问
使用内网ip访问
单单localhost不能访问,但是其他可以成功访问,怀着不逃避问题的心态,自己摸索好久,借助各类翻车的经验,以及搜索引擎的内容,终于解决:
注意观察访问成功的url信息,
失败的localhost他是
得出结论:使用http访问!!
然后又是坑
这里有一个小细节,加载出了ico,说明是可以访问的,但是点击之后
自动加入了https,
试了好多次 输入http一直跳转https,
核心解决
访问谷歌的 chrome://net-internals/#hsts
在这里的意思是说 对站点安全策略的保护,默认localhost拥有ssl保护
然后输入localhost删掉就好了
成功
tips:遇到浏览器访问这块的问题,包括渗透测试方面,多换几个浏览器访问试试
希望可以帮助到大家 知道我是大水比 不要说出来奥