【发布时间】:2012-07-21 22:48:44
【问题描述】:
Request.Headers["Header-Name"] 在 ASP.NET 中是否区分大小写?如果是的话,如果我不确定客户端会将它发送到什么情况下,我应该如何获得某个标头(例如“X-requested-with”)?
【问题讨论】:
标签: asp.net http-headers
Request.Headers["Header-Name"] 在 ASP.NET 中是否区分大小写?如果是的话,如果我不确定客户端会将它发送到什么情况下,我应该如何获得某个标头(例如“X-requested-with”)?
【问题讨论】:
标签: asp.net http-headers
Request.Headers 不区分大小写。
借用this answer:
来自RFC 2616,“超文本传输协议——HTTP/1.1”,§4.2,“消息头”:
每个标题字段由一个名称后跟一个冒号(“:”)和字段值组成。字段名称不区分大小写。
【讨论】:
NameValueCollection(是HttpRequest.Headers的实现类型)的备注:The hash code provider dispenses hash codes for keys in the NameValueCollection. The default hash code provider is the CaseInsensitiveHashCodeProvider.
不,根据RFC2616,它们不区分大小写
4.2 消息头
HTTP 标头字段,其中包括 general-header(第 4.5 节),
请求标头(第 5.3 节)、响应标头(第 6.2 节)和
entity-header(第 7.1 节)字段,遵循相同的通用格式 在 RFC 822 [9] 的第 3.1 节中给出。每个标头字段由
名称后跟冒号 (":") 和字段值。字段名称
不区分大小写。字段值前面可以有任何数量
LWS 的,尽管单个 SP 是首选。标题字段可以是
通过在每个额外的行前面加上 at
来扩展多行 至少一个 SP 或 HT。应用程序应遵循“通用形式”,其中 一个是已知的或指示的,在生成 HTTP 构造时,因为
可能存在一些无法接受任何内容的实现
【讨论】:
我从未使用过 ASP.NET,但 RFC HTTP/1.1 定义 message-headers 字段名不区分大小写。
如果 ASP.NET 遵循 HTTP 规范,Request.Header["Header-Name"] 将返回与 Request.Header["header-name"] 相同的值。
【讨论】: