栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

XHR.getAllResponseHeaders()未按预期在Chrome 60中返回标头

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

XHR.getAllResponseHeaders()未按预期在Chrome 60中返回标头

经过大量的搜索,调试,测试和无奈之后,我们终于发现Chrome 60中的标头字段名称转换为小写字母,与Chrome
59(在我同事的电脑上)保持不变,这是他们的名字。所以标题字段名称现在

x-access-token
X-Access-Token

对于那些

XHR.getAllResponseHeaders()
在某处的javascript中使用-
function且正在使用Chrome或其客户端的用户:准备好对您的javascript进行修补以保持其正常运行,因为 自Chrome
60起,XHR.getAllResponseHeaders()-函数现在仅输出小写的标头字段名称!

一些有相同问题的人:https :
//twitter.com/thegecko/status/890346862875742210

@thegecko:Argg!#Chrome 60强制XHR中的标头名称变为小写。getAllResponseHeaders()破坏了我!

另请参阅:https : //groups.google.com/a/chromium.org/forum/#!
topic /blink-
dev/_oxlCPNsrck ,https :
//github.com/whatwg/xhr/issues/146和更改日志位于https://chromium.googlesource.com/chromium/src/+/99c274ae8e7d366261dcfb89e0b98e733fb9d5f4

根据github和google组中的讨论,我们被警告说,执行区分大小写的字符串比较可能不是一件好事。在即将到来的HTTP /
2中,所有标头均为小写。因此,XHR规范在HTTP / 1.1中也更改为小写所有标头。Chrome(60)是第一个更改此设置的人,但是Gecko /
Firefox(https://bugzilla.mozilla.org/show_bug.cgi?id=1370485)和Webkit
/ Safari的补丁已可用。

我们使用一些简单的代码进行了测试,但是当

Foo: Bar
从服务器发送标头时,
XHR.getAllResponseHeaders()
-function
的输出(在Chrome 60中)将为`foo:Bar。

因此,为了使它在所有浏览器中都可以使用并适应未来发展:确保对响应中的标头字段名称执行不区分大小写的比较。可以通过

XHR.getAllResponseHeaders().toLowerCase()
在处理标题之前使用或使用不区分大小写的正则表达式(例如
XHR.getAllResponseHeaders().match(/foo/i);
查找它们)来轻松完成此操作。

编辑: 经过更多测试…我们发现使用

XHR.getResponseHeader()
也是从请求的标头获取值的安全方法。根据上面的示例,在发送标头时
Foo:Bar
,无论我们使用
XHR.getResponseHeader('Foo')
还是
XHR.getResponseHeader('foo')
都无所谓,两者都将输出值“ Bar”。

该MDN文档

XHR.getResponseHeader
证实了这一点:

标题名称的搜索不区分大小写。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/393484.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号