来自JacksonMessageConverter的Spring JSON污染响应



我的Spring应用程序中有一个JacksonMessageConverter,用于返回JSON响应。但是在返回JSON之前,我想按照Ajax安全-防止JSON劫持中给出的那样污染JSON。使用消息转换器时是否可以这样做?

更新

我正在寻找一个类似于这个带有responsebody的spring-prefixjson的解决方案,但我已经正确设置了配置。PFB-

<bean id="jacksonMessageConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
    <property name="prefixJson" value="true" />
    <property name="supportedMediaTypes" value = "text/plain;charset=UTF-8" />
</bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
        <list>
            <ref bean="jacksonMessageConverter"/>
        </list>
    </property>
</bean>

但是返回的JSON仍然没有前缀"&&{}"。

注意:我想为JSON使用不同的前缀,如Ajax安全-防止JSON劫持中所述但即使是杰克逊提供的默认支持似乎也不起作用。有什么想法吗?

试着调试MappingJacksonHttpMessageConverter,看看prefixJson是否等于true。如果没有,那么你的豆子没有正确注射。如果是,请查看MappingJacksonHttpMessageConverter类的writeInternal()方法。它清楚地做你需要的:

try {
        if (this.prefixJson) {
            jsonGenerator.writeRaw("{} && ");
        }
        this.objectMapper.writeValue(jsonGenerator, o);
    }

如果要添加自定义前缀,则需要覆盖writeInternal()并在那里执行。

更简单的方法是扩展MappingJacksonHttpMessageConverter并覆盖writeInternal方法来执行自定义前缀等操作

相关内容

  • 没有找到相关文章

最新更新