【问题标题】:How should HttpServletResponse.setHeader method do with null value?HttpServletResponse.setHeader 方法应该如何处理空值?
【发布时间】:2013-07-30 02:14:17
【问题描述】:

HttpServletResponse.setHeader 方法应该如何处理 null 值如下:

response.setHeader("ETag", null);

在实现 Servlet 接口时,我对此有点困惑,因为the Java Servlet Specification 对此似乎不清楚。

我想我可以选择以下之一:

  1. 将 null 视为空字符串“”。将 ETag 标头的值设置为“”。
  2. 什么都不做。
  3. 抛出异常。

在实践中,Tomcat 的实现只是忽略。而netty,即使不是Servlet实现,也会抛出NullPointerException。

【问题讨论】:

  • 看起来这将基于 servlet 容器或 Web 应用程序服务器实现来处理。

标签: java http servlets jsr


【解决方案1】:

根据 W3C 规范,ETag 值必须用双引号引起来。您可以选择“什么都不做”选项,也可以添加符合规范的实体标签标题

ETag: "some-etag-value"

【讨论】:

  • 是的,这是 HTTP Server 对 ETag 标头的正确行为。但我认为 setHeader 方法不需要考虑设置哪个标头。我想知道的是遵循 Java Servlet 规范的 setHeader 方法的正确行为。
猜你喜欢
  • 1970-01-01
  • 2018-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-17
  • 2011-01-14
相关资源
最近更新 更多