SpringBoot +java.lang.IllegalArgumentException: The character [_] is never valid in a domain name

java.lang.IllegalArgumentException: The character [_] is never valid in a domain name.

前言

当请求的域名中包含下划线[_],springboot中是会报错,跟踪了错误日志,是springboot内嵌的tomcat报的错:非法字符。。
所以说一开始就域名规范,可以避免后续的很多坑。

解决方案

问题不大,不要慌

方案A: 降低springboot的版本

  1. 定位了是springboot内嵌的问题后,上网google了下,比较低版本的tomcat版本是没有执行那么严格的字符限制的;所以为了老版本继续维护,把springboot的版本下调一点:如下为gradle中springboot gradle 插件的版本配置
buildscript {
    repositories {
       // mavenLocal()
      //  mavenCentral()
        maven { url 'http://192.168.25.215:8081/repository/maven-public/'}
    }
    dependencies {
        classpath 'org.springframework.boot:spring-boot-gradle-plugin:1.4.2.RELEASE'
    }
}
  1. 修改springboot版本为1.4.2.RELEASE,其对应的内嵌tomcat版本为8.5.6(如何快速查看gradle依赖的层级视图及其版本,推荐plugin:GradleView)下载插件后,可在IDEA顶部菜单那里进行打开视图
    如下图所示:
    GradleView打开
    可以查看Tomcat的版本:
    GradleView使用
    问题根源: 之前用的spirngBoot版本为1.5.20,其对应的tomcat版本为8.5.39,其对域名进行了严格的检查!!(其实这个是好事呀
    但为了兼容老版本~~

不想更新springboot的版本,降低版本代码修改量太大,可以考虑第二种方案 哈哈~

方案B: 配置springboot内嵌tomcat版本

  1. gradle脚本(build.gradle)中添加如下配置即可:
configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        if (details.requested.group == 'org.apache.tomcat.embed') {
            details.useVersion '8.5.6'
        }
    }
}

Bingo~~

参考

  1. https://stackoverflow.com/questions/22621132/spring-boot-gradle-tomcat-8
  2. https://github.com/rholder/gradle-view
  3. https://stackoverflow.com/questions/53504857/the-character-is-never-valid-in-a-domain-name
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值