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

域名配置SSL证书后Spring Boot项目Swagger接口文档无法访问如何解决

问题根因

配置HTTPS后Swagger UI默认仍使用HTTP协议发起接口请求,浏览器会拦截HTTP/HTTPS混合内容请求,最终触发TypeError: Failed To Fetch报错。


解决方案

1. 修改Swagger配置指定HTTPS协议

调整你的SwaggerConfig类中Docket Bean的配置,显式指定使用HTTPS协议,配置示例如下:

@Bean
public Docket api() {
    return new Docket(DocumentationType.SWAGGER_2).select()
            .apis(RequestHandlerSelectors.any()).paths(PathSelectors.any()).build()
            .apiInfo(apiInfo()).securitySchemes(Lists.newArrayList(apiKey()))
            .securityContexts(Arrays.asList(securityContext()))
            // 新增以下配置
            .protocols(new HashSet<>(Arrays.asList("https")))
            // 替换为你自己的服务域名
            .host("your-domain.com");
}

注意:如果你的Spring Boot服务是直接配置SSL证书而非通过反向代理实现HTTPS,需要在Swagger的host配置中带上对应的HTTPS端口,如host("your-domain.com:8443")

2. 配置Spring Boot支持反向代理头

如果你的HTTPS是通过Nginx等反向代理配置的,需要在application.yml中添加以下配置,让Spring Boot可以正确识别代理传递的HTTPS协议头:

server:
  forward-headers-strategy: native
  # 低版本Spring Boot使用下面的配置
  # use-forward-headers: true

同时需要在Nginx的站点配置中添加以下头传递规则:

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

3. 检查跨域配置

如果你的服务配置了CORS跨域规则,需要确保允许HTTPS域名访问,不要写死HTTP协议的域名,建议使用allowedOriginPatterns匹配所有合法域名:

@Override
public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/**")
            .allowedOriginPatterns("*")
            .allowedMethods("*")
            .allowedHeaders("*")
            .allowCredentials(true);
}

以上配置调整完成后重启服务,清空浏览器缓存重新访问Swagger即可恢复正常。


内容的提问来源于stack exchange,提问作者James Cologne

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:36:03