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 需要知道在哪里获取其配置。
我有一个 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 需要知道在哪里获取其配置。