【问题标题】:How to modify Tomcat's response header with valves?如何用阀门修改Tomcat的响应头?
【发布时间】:2013-10-09 20:40:48
【问题描述】:

我需要最小化 Tomcat 的响应标头。向 tomcat 发送请求的设备在内存中非常有限,因此我想删除标头 Date、Server 和 Content-Type。 我用动作挂钩设置了自己的阀门。钩子被调用,但似乎无法删除日期和服务器标头。

首先我只在ActionCode == COMMIT - 不起作用时才执行我的方法。 奇怪的。于是我查看了Tomcat源码:在Tomcat的AbstractHttp11Processor的方法action()中ActionCode==COMMITActionCode==COMMIT

  • prepareResponse() 被调用(设置了服务器和日期标题),然后
  • 它将标头写入输出缓冲区。

因此无法拦截。当我在调用此操作之前设置标题时,它们会在AbstractHttp11Processor 中被覆盖。当我在那之后设置标题时,它们将被忽略,因为它们已经写入缓冲区。我唯一的机会似乎是重置输出缓冲区并将标头写入缓冲区还是有更好的方法?甚至有可能做到这一点吗?

【问题讨论】:

    标签: tomcat response-headers tomcat-valve


    【解决方案1】:

    无法删除日期标题。它是 HTTP 1.1 规范所要求的。见RFC2626, section 14.18

    目前无法禁用服务器标头,但如果您打开针对 Tomcat 的增强请求,我将考虑添加一个选项以完全禁用它。

    【讨论】:

    • 是否有人打开了增强请求,如果有,#?另外,HTTP 1.1 不需要服务器?
    • 未提出增强请求。根据 RFC 2616,服务器标头是可选的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 2011-09-28
    • 1970-01-01
    相关资源
    最近更新 更多