【问题标题】:Is Request.Headers["Header-Name"] in ASP.NET case-sensitive?ASP.NET 中的 Request.Headers["Header-Name"] 是否区分大小写?
【发布时间】:2012-07-21 22:48:44
【问题描述】:

Request.Headers["Header-Name"] 在 ASP.NET 中是否区分大小写?如果是的话,如果我不确定客户端会将它发送到什么情况下,我应该如何获得某个标头(例如“X-requested-with”)?

【问题讨论】:

    标签: asp.net http-headers


    【解决方案1】:

    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.
    • "Headers" 是一个 NameValueCollection,键不区分大小写。 "QueryString" 和 "Form" 也是 NVC 的,因此也不区分大小写,除非更改比较器
    【解决方案2】:

    不,根据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 构造时,因为
    可能存在一些无法接受任何内容的实现

    【讨论】:

      【解决方案3】:

      我从未使用过 ASP.NET,但 RFC HTTP/1.1 定义 message-headers 字段名不区分大小写。

      如果 ASP.NET 遵循 HTTP 规范,Request.Header["Header-Name"] 将返回与 Request.Header["header-name"] 相同的值。

      【讨论】:

      • 2021:在 netcore 3 上测试:标头不区分大小写。
      猜你喜欢
      • 2011-11-16
      • 1970-01-01
      • 1970-01-01
      • 2013-03-16
      • 2012-08-07
      • 2012-03-11
      • 1970-01-01
      • 2013-10-25
      • 2011-09-02
      相关资源
      最近更新 更多