问题总结:将 HttpServletResponse 中的“Content-type”标头更改为“image/svg+xml”会给我一个空响应,“Content-length”在我的浏览器中显示“0”。
详细描述:
我正在使用一个使用 HttpServletRequest 和 HttpServletResponse 的 CMS 插件(在 Java 中)。CMS 在对 .svg 文件的请求返回“application/octet-stream”时存在问题。
我正在开发的插件是一个 Servlet,它拦截所有请求-响应对(将特定的 URL 模式与图像文件夹匹配)。然后我检查请求字符串是否包含“.svg”,然后在响应中将 Content-Type 更改为“image/svg+xml”(来自“application/octet-stream”)。
但是当我更改内容类型时;Content-length 标头为 0,浏览器不显示任何内容。换句话说,我在更改标题后丢失了内容。
有什么方法可以让我只更改一个标题而不必将图像内容写回响应?(Servlet 输出流)。
我想出了一个解决方案;在将其写入来自 InputStream 的响应之前,它会对相关的 svg 图像执行一个额外的 HttpGet 请求(在插件中),但我认为对于被传输的服务器上的每个 svg 请求来说成本太高了。
如果我只能更改标题而不执行额外的 I/O 操作。