SpringBoot 2升级问题-错误页总是返回HTML怎么办?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (422)

我最近将我们的项目升级到SpringBoot 2。该应用程序只是一个RESTAPI。现在,我们所有的400和500个响应都被返回为html而不是json。

我正在定义一个自定义的ErrorAttributes,就像文档说的那样。

@Configuration
public class WebConfig implements WebMvcConfigurer {

    ...

    @Bean
    public ErrorAttributes errorAttributes() {
        return new DefaultErrorAttributes() {

            @Override
            public Map<String, Object> getErrorAttributes(WebRequest webRequest,
                                                      boolean includeStackTrace) {
                Map<String, Object> errorAttributes = super.getErrorAttributes(webRequest, true);
                return errorAttributes;
            }

        };
    }

    ...

我想在本地调试这个问题,但是在SpringBoot决定为错误添加JSON响应的代码中找不到。这里的文档:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-error-handling说:

对于机器客户端,它生成一个JSON响应,其中包含错误、HTTP状态和异常消息的详细信息。

提问于
用户回答回答于

我认为SpringSecurity 4到SpringSecurity 5中有一些变化,使得我们的应用程序的过滤链早期出现了NPE。另外,更复杂的问题是,随着SpringBoot升级,/Error路由被强制进行身份验证。

最后,我修复了NPE,允许每个人看到/错误映射,然后确保ErrorMvcAutoConfiguration被正确初始化。现在一切正常。

扫码关注云+社区

领取腾讯云代金券