覆盖 HEAD 请求的内容类型

Override content-type for HEAD request

我有一个 Web 应用程序,它在进行实际 GET 调用之前进行 HEAD 调用。 GET 方法生成 application/json。当出现错误时说 (500),HEAD 的内容类型更改为 text/html。对于同样的错误,GET 的内容类型仍然是 application/json。有没有办法覆盖 HEAD 中返回的内容类型。这就是我形成回应的方式。这是一个 jersery 实现。

Response.status(errorStatus)entity( some json).build()

马尼什

我敢打赌 org.apache.catalina.valves.ErrorReportValve 正在压制您的回复。

看看 class 的 "report" 方法。如果响应是 4xx 或 5xx 并且它没有内容(即没有实体 - HEAD 响应没有)(第 153 行)然后......

content-type 设置为 text/html(第 283 行)。您的回复刚刚被压扁,但是...

ErrorReportValve 不会对已经提交的响应做任何事情(第 102 行)。

那么,也许可以尝试创建一个 servlet 过滤器,在 ErrorReportValve 压缩之前提交响应?像这样 https://gist.github.com/danmork/bf8c468141fa004298928a1ad9b31746,也许?