Java HttpServletRequest和getHeader():如何正确处理不区分大小写的头?

Java HttpServletRequest和getHeader():如何正确处理不区分大小写的头?,java,servlets,http-headers,Java,Servlets,Http Headers,因为我发现根据RFC,HTTP头是不区分大小写的,所以我想知道如何使用servlet以不区分大小写的方式访问HTTP头。有一个#getHeader(String)方法来获取头,但结果表明,该方法对头字段区分大小写 是否有一种“不区分大小写”的方式来获取标题字段?或者我必须遍历所有的头字段才能找到我要查找的头字段吗?您使用的是哪个servlet容器?国家: 标头名称不区分大小写 因此,这听起来像是您正在使用的容器中的一个bug。tomcat 8.0.24 impl of getHeader委托给“

因为我发现根据RFC,HTTP头是不区分大小写的,所以我想知道如何使用servlet以不区分大小写的方式访问HTTP头。有一个#getHeader(String)方法来获取头,但结果表明,该方法对头字段区分大小写


是否有一种“不区分大小写”的方式来获取标题字段?或者我必须遍历所有的头字段才能找到我要查找的头字段吗?

您使用的是哪个servlet容器?国家:

标头名称不区分大小写


因此,这听起来像是您正在使用的容器中的一个bug。

tomcat 8.0.24 impl of getHeader委托给“org.apache.tomcat.util.http.MimeHeaders”,该委托最终调用此方法,然后在该方法下执行不区分大小写的检查

313 public MessageBytes getValue(String name) {

public getValue(name){
事实上,它是Jetty 5。我将调查这个问题,感谢您向我指出JavaEE文档…;-)我认为Jetty可能会升级到版本6(或7?),您可能想看看升级。很抱歉重新启动一个旧线程,但我只想注意,Tomcat 7.0.39还返回区分大小写的头。@b主持人:您的意思是,如果您请求
CONTENT-TYPE
,它不会给您
CONTENT-TYPE
的值吗?这听起来很糟糕……与@jonsket,getHeader一样(“Authorization”)无法识别头“Authorization”,这是在tomcat8上。当我将实际头更改为“Authorization”时,它就工作了。