Spring - swagger 生成的主机是 HTTP 而不是 HTTPS - 手动设置主机

问题描述 投票:0回答:3

我使用Open Api:

        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-ui</artifactId>
            <version>1.6.9</version>
        </dependency>

这就是 swagger ui 的样子:

是否有一些设置可以生成安全网址? 我如何简单地一起覆盖基本路径(例如通过

application.properties

spring swagger-ui springdoc-openapi-ui
3个回答
0
投票

@Ray 是对的。但域名是隐藏的。
https://stackoverflow.com/a/74261128/20325718

如果您也想显示域名,可以尝试以下方法。

@Configuration
public class OpenAPIDefinitionConfiguration {
  @Component
  @Profile("prd")
  @OpenAPIDefinition(servers = @Server(url = "https://example.com"))
  public static class PrdOpenAPIDefinitionConfiguration {
  }

  @Component
  @Profile("local")
  @OpenAPIDefinition(servers = @Server(url = "https://local.example.com"))
  public static class LocalOpenAPIDefinitionConfiguration {
  }
}

应用程序.属性

spring.profiles.active=prd

或者如果你想显示所有环境,也可以通过以下方法显示。

@OpenAPIDefinition(
        servers = {
                @Server(
                        url = "https://{profile}.example.com/",
                        variables = {
                                @ServerVariable(
                                        name = "profile",
                                        allowableValues = { "prd", "local" },
                                        defaultValue = "prd"
                                )
                        }
                )
        }
)

0
投票

我在更新应用程序后遇到了同样的问题。我的解决方案是添加到我的 nginx 配置中

proxy_set_header X-Forwarded-Proto https;


0
投票

如果你想使用与URL相同的协议,你应该在配置类中定义这个bean。

   @Bean
    public OpenAPI openAPI(ServletContext servletContext) {
        Server server = new Server().url(servletContext.getContextPath());
        return new OpenAPI()
                .servers(List.of(server));
    }
© www.soinside.com 2019 - 2024. All rights reserved.