You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dropwizard REST API响应正文起始存在无效字符问题求助

解决Dropwizard+Spring API响应开头的)]}'无效字符问题

嘿,这个问题我之前踩过坑!那个)]}'可不是什么莫名其妙的乱码——它是Spring默认开启的JSON劫持防护前缀,用来防止恶意网站通过<script>标签加载JSON数据进行劫持。刚好你用了Dropwizard+Spring的组合,这个配置自动生效了,才导致响应开头多了这么一串让JSON解析工具头疼的字符。下面给你几个靠谱的解决办法:

方法1:直接关闭Spring的JSON前缀配置

这是最彻底的解决方案,适合前后端分离的架构(现在这种场景下JSON劫持的风险已经很低了)。

  • 如果是Spring Boot项目,直接在配置文件里加一行:

    # application.properties
    spring.jackson.parser.json-prefix=
    

    或者用YAML格式:

    # application.yml
    spring:
      jackson:
        parser:
          json-prefix: ""
    
  • 如果是传统Spring MVC项目,可以通过配置MappingJackson2HttpMessageConverter来关闭前缀:

    @Configuration
    public class WebMvcConfig implements WebMvcConfigurer {
        @Override
        public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
            MappingJackson2HttpMessageConverter jacksonConverter = new MappingJackson2HttpMessageConverter();
            jacksonConverter.setPrefixJson(false); // 关闭JSON前缀
            converters.add(jacksonConverter);
        }
    }
    

方法2:检查Dropwizard的Jackson配置是否冲突

Dropwizard本身也用Jackson处理JSON序列化,有可能和Spring的配置叠加导致问题。你可以在Dropwizard的Application类里确认没有额外添加前缀:

public class YourCrudApplication extends Application<YourConfiguration> {
    @Override
    public void run(YourConfiguration config, Environment env) {
        // 确保注册的JacksonProvider没有设置前缀
        env.jersey().register(new JacksonProvider());
    }
}

方法3:如果需要保留前缀,在Rest Assured里手动处理

要是你因为安全需求必须保留这个前缀,那可以在Rest Assured请求后手动去掉开头的无效字符再解析:

// 发送请求并获取响应体
String rawResponseBody = given()
        .when()
        .get("/your-api-path")
        .then()
        .extract()
        .body()
        .asString();

// 去掉开头的)]}'前缀
String cleanResponseBody = rawResponseBody.replaceFirst("^\\)\\]}\'", "");

// 解析为DTO对象
YourEntity entity = new ObjectMapper().readValue(cleanResponseBody, YourEntity.class);

顺带提一句:Postman能正常显示是因为它内部做了兼容,会自动忽略这串非JSON开头的字符,但像Rest Assured这类严格遵循JSON规范的工具就会直接报错啦。

内容的提问来源于stack exchange,提问作者Clarkey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:04:02