0

升级到tomcat7后,我遇到了问题。

有一个客户端程序从 jsp 读取响应,但它失败了,因为它不希望Content-Type标头包含charset. 出于某种原因,tomcat 会自动将默认字符集添加到Content-Type其中,我找不到抑制这种行为的方法。

<%@page contentType="application/json" %>
<%
    response.getWriter().print("{\"key\": \"value\"}");
%>

响应如下所示:

< HTTP/1.1 200 OK
< Server: Apache-Coyote/1.1
< Set-Cookie: JSESSIONID=3E964B5EA6E85CA4DDFB0DDF653B0297; Path=/test/; Secure; HttpOnly
< Content-Type: application/json;charset=ISO-8859-1
< Content-Length: 25
< Vary: Accept-Encoding
< Date: Wed, 13 Nov 2013 14:24:42 GMT
< 
{"key": "value"}  

起初我以为是AddDefaultCharsetFilter添加它,但它专门只在text/*.

(我同意客户端应该能够处理这种情况,但旧版本不能,不幸的是不可能升级所有客户端)

有没有办法让tomcat只交付Content-Type而不添加字符集?

谢谢!

4

1 回答 1

1

http://tomcat.apache.org/tomcat-7.0-doc/config/systemprops.html

org.apache.catalina.connector.Response.ENFORCE_ENCODING_IN_GET_WRITER

如果这是真的,那么在没有指定字符编码的情况下调用 Response.getWriter() 将导致对 Response.getCharacterEncoding() 的后续调用返回 ISO-8859-1 并且 Content-Type 响应标头将包含一个 charset=ISO -8859-1 组件。(SRV.15.2.22.1)

如果未指定,将使用默认的规范兼容值 true

于 2013-11-13T15:37:58.473 回答