我有一个在进行实际GET调用之前正在进行HEAD调用的Web应用程序。 GET方法生成application / json。当出现错误说(500)时,HEAD的内容类型变为text / html。对于相同的错误,GET的内容类型仍然是application / json。有没有办法覆盖HEAD中返回的内容类型。这就是我如何形成回应。这是一个jersery实现。
Response.status(errorStatus)entity( some json).build()
答案 0 :(得分:0)
和Manish。
我打赌org.apache.catalina.valves.ErrorReportValve正在压缩你的回复。
查看"报告"该类的方法。如果响应是4xx或5xx并且它没有内容(即没有实体 - HEAD响应没有)(第153行)那么......
将content-type
设置为text/html
(第283行)。你的反应刚刚被压扁了,但......
如果响应已经提交,则ErrorReportValve不会对响应执行任何操作(第102行)。
那么,也许尝试创建一个servlet过滤器,在ErrorReportValve压缩它之前提交响应?或许像https://gist.github.com/danmork/bf8c468141fa004298928a1ad9b31746这样的东西?