http headers 在 iOS 11 中转换为小写

http headers converted to lowercase in iOS 11

在 iOS 11 测试版上测试我的 iPad 应用程序时,我观察到一个独特的行为,即响应的 HTTP header 会自动转换为小写。如何以编程方式更改此行为?我们检查了实际 header 名称的代码,该名称不适用于 iOS 11 beta,因为 header 名称已转换为小写。

在回答这个问题时,我假设您所说的 HTTP headers 仅指密钥而不是 headers 的值。

如果您想与大写字符串进行比较,您可以在 header 上使用 NSString 实例方法 -uppercaseString。明智的做法是让您的代码不区分大小写,以防服务器出于某种原因被编辑为在将来发送小写或混合大小写 headers。

如果 iOS 将每个 header 的值设为小写,那将非常糟糕。我会建议您向 Apple 提交错误报告,无论键或值大小写是否被修改。也许您可以使用 Charles Web Proxy 进行验证,以查看响应是否确实已更改。

祝你好运!

注意 - 将 headers 转换为小写字母的做法符合 HTTP 2.0 规范的准备工作。对于 HTTP 1.0,headers 应该是 case-insensitive bot 这并不总是被遵循。 参见 https://evertpot.com/http-2-finalized/

Chrome 更新 60 已经更改,因此响应 headers 现在是小写的(这给我们带来了一些问题!)

预计所有浏览器都会随之更新,因此您需要注意这一点