You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 1.4迁移至1.5后Hostname校验引发400错误求助

解决Spring Boot 1.5主机名校验导致的400错误

这个问题我之前帮不少开发者处理过,根源是Spring Boot 1.5对内嵌Tomcat的主机名校验做了默认启用的调整——默认只允许localhost、127.0.0.1这类本地标识的Host头,自定义的主机名比如docker_host会被判定为非法,直接返回400错误。哪怕你的docker_host解析到127.0.0.1也没用,因为校验是基于请求里的Host字段值,不是解析后的IP。

下面给你几个可行的解决办法:

1. 配置允许的主机名列表(推荐)

在你的application.properties或application.yml中添加以下配置,明确指定允许的主机名:

properties格式:

# 切换到指定允许主机的模式
server.tomcat.remoteip.host-header-validation=ALLOWED_HOSTS
# 列出所有允许的主机名,用逗号分隔
server.tomcat.remoteip.allowed-hosts=docker_host,localhost,127.0.0.1

yml格式:

server:
  tomcat:
    remoteip:
      host-header-validation: ALLOWED_HOSTS
      allowed-hosts: docker_host,localhost,127.0.0.1

如果需要更灵活的匹配,还可以用正则表达式,比如允许所有以.local结尾的主机:

server.tomcat.remoteip.allowed-hosts=.*\.local,localhost,127.0.0.1

2. 关闭主机名校验(仅推荐开发/测试环境)

如果是开发或测试场景,不想做严格校验,可以直接关闭这个功能:

properties格式:

server.tomcat.remoteip.host-header-validation=DISABLED

yml格式:

server:
  tomcat:
    remoteip:
      host-header-validation: DISABLED

注意:生产环境不建议这么做,会带来潜在的安全风险。

3. 自定义Tomcat容器配置(代码层面)

如果需要更精细化的控制,可以通过Java代码自定义Tomcat的配置:

import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
import org.apache.catalina.valves.RemoteIpValve;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class TomcatConfig {

    @Bean
    public TomcatEmbeddedServletContainerFactory tomcatContainerFactory() {
        TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
        RemoteIpValve remoteIpValve = new RemoteIpValve();
        // 设置允许的主机名
        remoteIpValve.setAllowedHosts("docker_host,localhost,127.0.0.1");
        factory.addEngineValves(remoteIpValve);
        return factory;
    }
}

这样配置后,你的docker_host主机名就能正常通过校验,请求http://docker_host:8080/api/portal/v1/login就不会返回400错误了。

内容的提问来源于stack exchange,提问作者Dominik Dorn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:48:53