2012-03-15 153 views
0

我的Spring應用程序中有一個JacksonMessageConverter用於返回JSON響應。 但是在返回JSON之前,我想沾染Ajax Security - Preventing JSON hijacking中給出的JSON。使用消息轉換器時可以這樣做嗎?來自JacksonMessageConverter的Spring JSON污點響應

更新

正在尋找類似這樣spring prefixjson with responsebody一個解決方案,但我已經有配置設置是否正確。 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不與 「& & {}」 爲前綴。

注意:我想爲Ajax Security - Preventing JSON hijacking 中所解釋的JSON使用不同的前綴,但即使在Jackson中提供的默認支持似乎也不起作用。有任何想法嗎?

回答

1

嘗試調試MappingJacksonHttpMessageConverter看,如果prefixJson等於真正。 如果沒有,那麼你的bean沒有被正確注入。 如果是,請查看MappingJacksonHttpMessageConverter類的writeInternal()方法。它清楚地做你的需要:

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

如果你想添加自定義前綴,你需要重寫writeInternal()做它。

+0

感謝您的回覆。我正在嘗試這種方法。將一次完成的答案更新。 – Raghav 2012-03-20 16:00:52

1

更簡單的辦法是延長MappingJacksonHttpMessageConverter並覆蓋writeInternal方法做的東西,如自定義前綴等

+0

+1對於建議 – Raghav 2012-03-20 16:01:33