我有以下堆栈:
Spring Boot : 2.7.3
Spring Security Enabled
springdoc-openapi-ui : 1.6.15
Application.properties
# Swagger Properties
springdoc.api-docs.path=/ics/api/docs
springdoc.swagger-ui.path=/ics/api/swagger-ui.html
依赖性:
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.6.15</version>
</dependency>
我在 Spring Security 中的代码:
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.cors().and().csrf().disable().authorizeHttpRequests((authz) -> authz.anyRequest().permitAll());
return http.build();
@Bean
public WebSecurityCustomizer webSecurityCustomizer() {
return (web) -> web.ignoring().antMatchers("/swagger-ui/**", "/ics/api/**");
}
当我在 localhost 中运行我的应用程序时,我得到以下信息:
api doc at the path : http://localhost:8080/ics/api/docs
swagger at the path : http://localhost:8080/ics/api/swagger-ui/index.html
Swagger Config path : http://localhost:8080/ics/api/docs/swagger-config
localhost api文档内容:
{
"openapi": "3.0.1",
"info": {
"title": "OpenAPI definition",
"version": "v0"
},
"servers": [
{
"url": "http://localhost:8080",
"description": "Generated server url"
}
],
"paths": {...}
}
localhost Swagger-Config 内容:
{
"configUrl": "/ics/api/docs/swagger-config",
"oauth2RedirectUrl": "http://localhost:8080/ics/api/swagger-ui/oauth2-redirect.html",
"url": "/ics/api/docs",
"validatorUrl": ""
}
localhost Swagger-UI 内容:
现在,当我在环境(kubernetes 集群)中部署我的应用程序时,我可以同时看到 api-doc 和 swagger 配置,但是在渲染 swagger-UI 时出现以下错误:
然后当我点击右侧的“探索”时,我得到以下内容:
我已经查看了很多论坛,但直到现在我还没有得到任何解决方案。我也尝试过使用默认属性,但结果相同。
更新:
我发现 swagger-ui 在尝试呈现 swagger-config 时,应用程序上下文从 URL 中丢失,因此它无法呈现配置文件。当我明确给出 api-doc 的整个 URL 时,它能够正确呈现。现在 URL 变成了 HTTP 而不是 HTTPS,因此我无法测试 API。谁能帮帮我。
API 命中错误:
Failed to fetch.
Possible Reasons:
CORS
Network Failure
URL scheme must be "http" or "https" for CORS request.
** 请求 URL 包含我检查过的 HTTPS。