我有一个例外,下划线不能在域名中使用。我想知道此异常是特定于版本还是下划线不能在域名中给出。如果是特定于版本的,请建议我如何解决它。
java.lang.IllegalArgumentException:字符[_]永远无效 在一个域名中。在 org.apache.tomcat.util.http.parser.HttpParser $ DomainParseState.next(HttpParser.java:946) 在 org.apache.tomcat.util.http.parser.HttpParser.readHostDomainName(HttpParser.java:842) 在org.apache.tomcat.util.http.parser.Host.parse(Host.java:66)处 org.apache.tomcat.util.http.parser.Host.parse(Host.java:40)在 org.apache.coyote.AbstractProcessor.parseHost(AbstractProcessor.java:277) 在 org.apache.coyote.ajp.AjpProcessor.prepareRequest(AjpProcessor.java:934) 在org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:456) 在 org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 在 org.apache.coyote.AbstractProtocol $ ConnectionHandler.process(AbstractProtocol.java:800) 在 org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1471) 在 org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617) 在 org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61) 在java.lang.Thread.run(Thread.java:745)
答案 0 :(得分:1)
Tomcat 8.5.x和更高版本实现strict RFC-compliant hostnames as a security precaution。 HTTP RFC require host-header validation,因此Tomcat执行该验证。
trail中有RFCs,需要进行这种检查并定义主机名中可以和不能的内容。
您唯一的选择是降级Tomcat(不推荐)或将您的主机名固定为有效域名。
答案 1 :(得分:0)
您可以使用 SpringBoot:1.4.2.RELEASE 的较低版本,此版本使用嵌入
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
if (details.requested.group == 'org.apache.tomcat.embed') {
details.useVersion '8.5.6'
}
}
}