美文网首页
http头部为何使用下滑线的变量,用$_SERVER获取不到

http头部为何使用下滑线的变量,用$_SERVER获取不到

作者: 旅行者xy | 来源:发表于2019-03-13 10:46 被阅读0次

今天想要在http的请求中添加一个头部变量,发现如果使用带有下滑线的变量名,则通过$_SERVER获取不到该变量名,这是为什么呢?

服务器为何要对字段名中使用了下划线的头视而不见呢?并且,不管是 Apache 还是 Nginx,对于这样的情况,都不约而同地采取了一样的策略。
在 RFC 2616 4.2 节中,有如下一段话:

Request (section 5) and Response (section 6) messages use the generic message format of RFC 822 [9] for transferring entities (the payload of the message).
这段话的意思,就是说 HTTP/1.1 的请求和响应消息使用 RFC 822 中的通用消息格式来传输实体(消息载荷)。

在 RFC 822 3.1.2 节中,对于消息格式的说明,有这样一句话:

The field-name must be composed of printable ASCII characters (i.e., characters that have values between 33. and 126., decimal, except colon).
也就是说,HEADER 字段名可以可由可打印的 ASCII 字符组成(也就是十进制值在 33 和 126 之间的字符,不含冒号)。

不含冒号很容易理解,因为 Field-Name 和 Value 之间需要用冒号分割。然而,我们通过查询 ASCII 码表可知,下划线的十进制 ASCII 值为 95,也在此范围之内!
其实,在 HEADER 字段名中使用下划线其实是合法的、符合 HTTP 标准的。服务器之所以要默认禁止使用是因为 CGI 历史遗留问题。下划线和中划线都为会被映射为 CGI 系统变量中名中的下划线,这样容易引起混淆。
在 nginx 服务器中,通过显式地设置 underscores_in_headers on 可以开启在字段名中使用下划线。默认该选项是关闭的,所以在默认情况下,所有包含下划线的字段名都会被丢弃。

\color{red}{另外,需要注意的是,若是有使用代理,则要支持使用下滑线的变量名,则`代理服务器`那边也需要开启支持下滑线的选项。}

参考链接:https://www.jianshu.com/p/2320f1ece1a

相关文章

  • http头部为何使用下滑线的变量,用$_SERVER获取不到

    今天想要在http的请求中添加一个头部变量,发现如果使用带有下滑线的变量名,则通过$_SERVER获取不到该变量名...

  • 5分钟上手Sass

    用作变量 定义变量 使用变量 样式嵌套 Modules 样式模块化 通常命名以下滑线开头: _base.scss ...

  • iris-路由基础

    支持的http method path中类似Spring使用变量参数 获取路由

  • nodejs 获取body内容

    之前用axios在前端用body协议发送,结果在server端获取不到,最后发现原来是dev-server.js里...

  • IDEA 优化(一)

    激活 可以到http://idea.lanyus.com/网站获取注册码,或者使用如下license server...

  • weex踩坑记录(2)

    1、在使用storage客户端存储的时候, 变量不能使用局部变量的形式,也就是下面这种是获取不到的,或者获取到了,...

  • PHP 扩展 - 获取 $_SERVER 变量的小坑

    之前说过获取 $_SERVER 全局变量可以用 来获取,之前开发环境都是 Apache 并没有发现什么问题,然而今...

  • 搭建服务器

    http-server 使用 http-server node工具启动一个静态服务器 server-moke 使用...

  • SVN 命令行演练

    svn 常用命令 svn HTTP Server 的端口号:443 svn HTTP Server 的端口号获取 ...

  • http-server/live-server

    http-server,是基于node.js的一个http服务器使用方法: 安装node.js(无需配置环境变量)...

网友评论

      本文标题:http头部为何使用下滑线的变量,用$_SERVER获取不到

      本文链接:https://www.haomeiwen.com/subject/nuqzpqtx.html