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

Springfox UI文档访问引发HTTP 405错误

欧阳博超
2023-03-14

我正在开发一个基于SpringBoot的REST Api,并使用Springfox生成swagger文档。

下面是大摇大摆的配置:

@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
    @Autowired
    private AppConfiguration appConfiguration;

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("app-api")
                .apiInfo(apiInfo())
                .select()
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("App API")
                .termsOfServiceUrl(appConfiguration.getApiTosUrl())
                .version("1.0").build();
    }
}

下面是我正在使用的web安全配置:

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http.cors().and().csrf().disable().authorizeRequests()
                .antMatchers("/no-auth/**").permitAll()
                .antMatchers("/v2/api-docs", "/swagger-resources/configuration/ui", "/swagger-resources", "/swagger-resources/configuration/security", "/swagger-ui.html", "/webjars/**").permitAll()
                .anyRequest().authenticated()
                .and()
                .addFilter(new JWTAuthenticationFilter(securityConfiguration, authenticationManager()))
                // this disables session creation on Spring Security
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
    }

    @Override
    public void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder);
    }

    @Bean
    CorsConfigurationSource corsConfigurationSource() {
        final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", new CorsConfiguration().applyPermitDefaultValues());
        return source;
    }

访问URL:HTTP://localhost:8080/swagger-ui.html时会出现HTTP错误405:不支持GEThtml" target="_blank">请求。

你可以指导我如何解决这个问题。

编辑:我注意到swagger-ui.htm根本没有被映射!我正在使用springfox 2.8.0

2018-05-14 12:17:47.019信息1012---[restartedMain]S.w.s.m.m.a.RequestMappingHandlerMapping:将“{[/swagger-Resources]}”映射到公共org.SpringFramework.http.ResponseEntity>SpringFox.Documentation.Swagger.Web.APIResourceController.SwaggerResources()2018-05-14 12:17:47.020信息1012--[restartedMain]S.w.s.m.m.a.RequestMappingHandlerMapping:将IngFramework.boot.autocigure.web.servlet.error.BasicErrorController.Error(javax.servlet.http.HttpServletRequest)

共有1个答案

须原
2023-03-14

当我有一个请求映射/**时,我也有同样的情况。405的原因是Swagger请求由另一个RequestMapping处理。您可以在DispatcherServlet中为swagger URL更改它。我在https://github.com/pmoerenhout/springfox-boot-bug上做了一个很小的例子。

您可以使用这个Spring映射来排除Swagger UI模式

@RequestMapping(value = { "/", "/{part:^(?!swagger-ui$).*}/**" })
 类似资料:
  • 问题内容: 为了在具有许多参数的表单中发布AJAX表单,我使用一种解决方案:创建一个,通过POST将表单发布到其中,然后访问的内容。具体来说,我正在访问这样的内容: 我对其进行了测试,并且效果良好。 在某些页面上,我开始出现“访问被拒绝”错误。据我所知,如果iframe是从同一域提供的,则不应发生这种情况。 我很确定它以前可以正常工作。有人知道吗? 如果我不够清楚:我要发布到 同一域 。因此,这不

  • 我对雄猫的东西真的很陌生。我下载了Tomcat7.0 windows installer,并使用默认配置安装了它。安装后,我在浏览器中键入localhost:8080,查看Tomcat是否正常工作。但是,它显示了如下的错误消息:Access error:404--未找到不能定位文档:/并且页面中没有其他显示Tomcat或Apache单词的内容。似乎Tomcat没有回应。 我谷歌搜索了这个论坛,但到

  • 我是Git的新手(2天前刚刚开始)。我正在尝试创建一个项目来练习我从这里学到的基本命令。 到目前为止,我在哪里: > < li>[success]创建一个新的public git项目(因为我以前尝试过private和internal,但是我不能克隆它,我不知道为什么)。在这里。 < li >将< code>README.md添加到项目中。 < Li >[成功]创建一个名为< code>develo

  • Windows 操作系统通过将用户帐户和组成员身份匹配与其关联的权利、特权和权限,帮助防止在未经授权的情况下使用文件、应用程序和其他资源。