java Spring 使用 Swagger 启动 - 无法加载远程配置

java Spring Boot with Swagger - Failed to load remote configuration

我有一个 Java 11 Spring Boot 2.5.1 应用程序。

Swagger 通过 http:

在本地工作

我添加了 Swagger,它在我的本地主机上完美运行:

http://localhost:8085/swagger-ui/index.html#/

Swagger 无法通过 https 远程工作:

但是,当我将其部署到远程服务器时,出现以下错误:

https://mycompany.co/pow-wow/swagger-ui/index.html#/

错误

Failed to load remote configuration.

注意:远程服务器是通过https访问的。

可在远程服务器上访问 REST 端点。

例如按预期获得 https://mycompany.co/pow-wow/powwow/test-me returns 200。

问题

如何通过远程服务器访问 Swagger?

代码

pom.xml

    <!-- Swagger -->
    <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-ui</artifactId>
        <version>1.6.7</version>
    </dependency>

WebSecurityConfig.java

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        //http.csrf().disable().authorizeRequests().antMatchers("/powwow/*").hasRole("USER").and().httpBasic();
        //http.csrf().disable().authorizeRequests().antMatchers("/*").permitAll().and().httpBasic();
        http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
                .authorizeRequests().antMatchers("/soapWS/**").permitAll().and()
                .authorizeRequests().antMatchers("/swagger-ui/**", "/v3/api-docs/**").permitAll().and()
                .authorizeRequests().antMatchers("/actuator/**").permitAll()
                .anyRequest().authenticated().and()
                .httpBasic().and()
                .csrf().disable();
    }
}

更多信息:

访问 Swagger 时在浏览器中查看网络流量时。

在本地,有一个电话:

http://localhost:8085/v3/api-docs/swagger-config

returns:

{"configUrl":"/v3/api-docs/swagger-config","oauth2RedirectUrl":"http://localhost:8085/swagger-ui/oauth2-redirect.html","url":"/v3/api-docs","validatorUrl":""}

远程呼叫:

https://mycompany.co/v3/api-docs/swagger-config

哪个returns一个302.

但是https://mycompany.co/pow-wow/v3/api-docs/swagger-config

returns:

{"configUrl":"/v3/api-docs/swagger-config","oauth2RedirectUrl":"http://localhost:8085/swagger-ui/oauth2-redirect.html","url":"/v3/api-docs","validatorUrl":""}

所以这表明问题与调用中缺少 /pow-wow 上下文路径有关。

尝试将此也添加到您的安全配置中 class

@Override
public void configure(WebSecurity web) throws Exception {
   web.ignoring().antMatchers("/swagger-ui/**", "/v3/api-docs/**");
}

你应该尝试添加

springdoc:
  swagger-ui:
    config-url: /pow-wow/v3/api-docs/swagger-config
    url: /v3/api-docs

给你的application.properties。在您提供的示例中

https://mycompany.co/pow-wow/v3/api-docs/swagger-config

它表明你的路径中有“/pow-wow/”。 Swagger 需要知道在哪里获取其配置。