Request: 区分大小写的标头字符串

创建于 2017-03-24  ·  3评论  ·  资料来源: request/request

你好,

我在我的一个“IoT”设备中发现了一个嵌入式 Web 服务器,它在使用 iobroker.javascript 中的“请求”模块时没有进行身份验证。

问题是,该请求以所有小写字母发送 Authorization 标头字段。 我不知道,如果标头必须区分大小写,它是否在 RFC 中定义。

是否可以更改 auth.js 文件(也可能是其他文件),使 Header 字段以大写字母开头并以小写字母开头

授权

例如。 对于这种行为,还有一些其他示例,例如主机标头等。

| 软件| 版本
| ---------------- | -------
| 请求 | 2.79.0
| 节点 | 4.5.0
| 每日头条 | 3.10.8
| 操作系统 | Ubuntu 14.04.5 LTS 内核 3.16.0-44-generic #59~14.04.1-Ubuntu

亲切的问候乌维

最有用的评论

恕我直言,我认为这值得重新审视。 确实,RFC 指定了不区分大小写的标头,但现实情况是,大多数人除了常见的 Web 浏览器之外不针对任何东西进行测试。 http 服务器的 case 处理通常不受该库用户的控制。

大多数浏览器使用标题大小写的标题,这个库可以做的最有用的事情是模拟最常用的字符串,例如Host:不是host:Cookie:不是cookie: 。 这样它就可以在我们的浏览器工作的任何地方工作。 加入羊群会带来更好的兼容性(正确或错误),并且还具有隐私优势。

如果补丁可能被接受,很高兴开发补丁,想法? 可以标记功能以保持对喜欢小写字母的人的兼容性。

所有3条评论

根据 RFC 规范,HTTP 标头不区分大小写。 您必须使用headers选项手动设置这些标题。

关于这一点多一点,因为它出现了很多。

@simov是正确的,您的服务器不符合规范。 HTTP 规范非常清楚标头必须不区分大小写。

在请求中,我们默认为请求生成的标头使用小写字母,但是当您手动设置标头时,我们会保留这些标头

如果您想要特定的大小写,您需要自己生成身份验证标头,并在请求中使用headerssetHeader功能设置它们。 对于不符合规范的服务器,请求更改其默认值是不合理的,因为我们没有办法获胜,总会有一个服务器不喜欢特定的默认值并且不符合规范。

恕我直言,我认为这值得重新审视。 确实,RFC 指定了不区分大小写的标头,但现实情况是,大多数人除了常见的 Web 浏览器之外不针对任何东西进行测试。 http 服务器的 case 处理通常不受该库用户的控制。

大多数浏览器使用标题大小写的标题,这个库可以做的最有用的事情是模拟最常用的字符串,例如Host:不是host:Cookie:不是cookie: 。 这样它就可以在我们的浏览器工作的任何地方工作。 加入羊群会带来更好的兼容性(正确或错误),并且还具有隐私优势。

如果补丁可能被接受,很高兴开发补丁,想法? 可以标记功能以保持对喜欢小写字母的人的兼容性。

此页面是否有帮助?
0 / 5 - 0 等级