我目前正在使用Spring MVC 3.0.6。我的期望是每当在Spring级别抛出任何异常(即 - 在向我的控制器发出请求之前),没有异常堆栈将作为响应主体返回。当预期的结果是HTML时,控制转到包含自定义错误消息的错误页面。在这种情况下,结果与我的预期相符。如何避免响应正文中的异常堆栈
但我面临的问题,而预期的结果是JSON。在这种情况下,我将异常堆栈作为JSON格式。
EG-
请求的URL - /MyApp/secure/employee/name.json?employee=815009 & .........
让通过URL篡改看跌员工说= 815003333333333333333333333333333333333333333333333333333333333333333333333333333333339(意味着巨大的有效载荷)。
现在我越来越喜欢的响应 -
{ “异常”:{ “值”: “8150 ......... ..9”, “错误码”: “typeMismatch”, “requiredType”:“长“,”propertyName“:null,”propertyChangeEvent“:null,”message“:”无法将类型'java.lang.String'的值转换为所需类型'long';嵌套异常是org.springframework.core.convert。 ConversionFailedException:无法将值“8150 ............ 9”从类型'java.lang.String'转换为类型'long';嵌套异常是java.lang.NumberFormatException:对于输入字符串:\“8150 ......... ............ ..9“,”rootCause“:{”cause“:null,”message“:”对于输入字符串:\“8150 ........................... 9”,“localizedMessage “:”对于输入字符串:\“8150 ............ ..9 \”“,”stackTrace“:[{............... ... ..}]}}
我预期的反应会是怎样 -
{ “值”: “一些自定义错误消息”], “成功”:假}
注意:我的控制器我期望员工在@RequestParam中长(数据类型)。
我担心的是,由于异常堆栈包含有关从中传播异常的库的详细信息,可能会使我的应用程序从安全角度来看很容易受到攻击。
有什么办法可以返回自定义消息而不是异常堆栈吗?
向我们展示行为。 – 2015-02-12 03:51:47
我已更新我的关注。 – user1468495 2015-02-12 05:00:15