当前位置: 首页 > 知识库问答 >
问题:

带Swagger的Java Spring Boot-加载远程配置失败

冯浩旷
2023-03-14

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

Swagger通过http在本地工作:

我添加了Swagger,它在我的本地主机上非常有效:

http://localhost:8085/swagger-用户界面/索引。html#/

Swagger无法通过https远程工作:

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

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

错误

无法加载远程配置。

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

RESTendpoint可在远程服务器上访问。

e、 g.获取https://mycompany.co/pow-wow/powwow/test-me按预期返回200。

问题

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

代码

pom.xml

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

WebSecurity配置。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-文档/招摇过市配置

返回值:

{"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

它返回302

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

返回值:

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

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

共有2个答案

卫诚
2023-03-14

尝试将其添加到安全配置类中

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

你应该试着加上

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

到您的应用程序。属性。在您提供的示例中

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

它显示您的路径中有“/pow-wow/”。Swagger需要知道在哪里获取它的配置。

 类似资料:
  • 带Springdoc的Spring Boot 2.6.3。 在,当我将路径设置为/v3/api docs或将其删除时,这意味着使用默认路径“/v3/api docs”。Swagger UI页面与API一起正确显示http://localhost:8080/swagger-用户界面/索引。html 但我想覆盖下面的路径 然后SwaggerUI显示"加载远程配置失败"错误:

  • 此篇文档主要讲在应用启动阶段,Dubbo框架如何将所需要的配置采集起来(包括应用配置、注册中心配置、服务配置等),以完成服务的暴露和引用流程。 根据驱动方式的不同(比如Spring或裸API编程)配置形式上肯定会有所差异,具体请参考XML配置、Annotation配置、API配置三篇文档。除了外围驱动方式上的差异,Dubbo的配置读取总体上遵循了以下几个原则: Dubbo支持了多层级的配置,并按预

  • 我有几个微服务,它们都在尤里卡(发现客户端)注册。最近,我为所有微服务启用了Swagger2(SpringFox)。 一旦我启用了swagger,我的微服务就开始向Eureka注册为“Uknown”服务,并使用默认的8080端口注册。 我的应用程序类是这样的。 我已尝试从应用程序中移动我的Eureka配置。yml到引导。yml。但是,如果我移动功能区,我的客户端将无法获取应用程序实例和Eureka

  • Swagger配置不起作用我在springboot中使用swagger,当我点击这个URL http://localhost:8080/swagger-ui . html时,我得到了错误404。我创建了单独的配置文件,但未能加载资源:服务器响应的状态为404()这里是所有文档的详细信息 UserCongig.kt 程序包com.main.swaggerdemo.config UserControl

  • 问题内容: 更新: 为避免问题完全归因于同一原产地政策的可能性,我尝试在本地提供服务,因为所有资产都来自使用 Serve 。它没有解决问题。因此,由于相同的原始策略,可能无法编辑小提琴,但是您可以在此处看到代码。 我正在尝试使用Dynatable加载外部JSON,跳过读取/标准化步骤(该步骤从现有表生成JSON)。应该支持它,但是它对我不起作用。 这是我对JSFiddle的尝试。从小提琴中可以看出

  • void config_load(string file [, string section]) This loads config file data and assigns it to the template. This works identical to the template config_load function. 加载配置文件,并将其中的数据传送到模板中,它的功能和config