5

带有 springdoc-openapi-ui (Swagger UI) 的 Spring Boot 2.2 应用程序运行 HTTP 端口。应用程序部署到 Kubernetes,Ingress 将 HTTPS 请求从集群外部路由到服务。

在这种情况下,可用的 Swagger UIhttps://example.com/api/swagger-ui.html有错误的“生成的服务器 url” - http://example.com/api。虽然它应该是https://example.com/api

虽然 Swagger UI 通过 HTTPS 访问,但生成的服务器 URL 仍然使用 HTTP。

4

4 回答 4

4

我有同样的问题。下面为我​​工作。

@OpenAPIDefinition( 
    servers = {
       @Server(url = "/", description = "Default Server URL")
    }
) 
@SpringBootApplication
public class App {
// ...
}
于 2021-06-29T20:29:17.280 回答
3

如果接受的解决方案对您不起作用,那么您始终可以通过定义 bean 手动设置 url。

@Bean
public OpenAPI customOpenAPI() {
    Server server = new Server();
    server.setUrl("https://example.com/api");
    return new OpenAPI().servers(List.of(server));
}

并且可以通过属性定义 url 并在此处注入。

于 2021-05-11T02:46:49.393 回答
2

springdoc-openapi常见问题解答中有一节如何springdoc-openapi-ui在反向代理后面部署 Doploy?.

常见问题部分可以扩展。

确保 X-Forwarded 标头由您的代理(X-Forwarded-ForX-Forwarded-Proto其他)发送。

如果您使用 Undertow ( spring-boot-starter-undertow),请设置属性server.forward-headers-strategy=NATIVE以使 Web 服务器本机处理 X-Forwarded 标头。此外,如果您不使用它,请考虑切换到 Undertow。

如果您使用的是 Tomcat ( spring-boot-starter-tomcat),请设置属性server.forward-headers-strategy=NATIVE并确保列出所有内部代理的 IP 地址以信任该属性server.tomcat.internal-proxies=192\\.168\\.\\d{1,3}\\.\\d{1,3}。默认情况下,10/8、192.168/16、169.254/16 和 127/8 中的 IP 地址是受信任的。

或者,对于 Tomcat 设置属性server.forward-headers-strategy=FRAMEWORK

有用的链接:

于 2020-03-10T20:31:18.450 回答
0

下面为我​​工作。

@OpenAPIDefinition(servers = {@server(url = "/", description = "Default Server URL")})
@SpringBootApplication
class App{
// ...
}

或者

@OpenAPIDefinition(servers = {@server(url = "/", description = "Default Server URL")})
@Configuration
public class OpenAPIConfig {
@Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI()
                .info(new Info().title("App name")
                        .termsOfService("http://swagger.io/terms/")
                        .license(new License().name("Apache 2.0").url("http://springdoc.org")));
    }
}

生成的服务器 url 是 HHTP - 问题

于 2021-12-08T11:35:22.767 回答