0
点赞
收藏
分享

微信扫一扫

前端接口请求HTTP设置自定义header属性字段大小写问题

问题:

接口请求头传token值的字段为tokenValue,需要用到token的接口一直不能成功请求。

后端排查发现没有接收到token,前端虽然传了token值,但是发现浏览器把tokenValue变成了Tokenvalue,导致后端没正确接收到token值。

原因是:

HTTP RFC 里规定,大小写不敏感。

HTTP/1.x 大小写不敏感,但现实是需要做到敏感的。

现在有的服务逐步在开启HTTP/2了,HTTP/2 和 HTTP/1.x 同样使用 ASCII 字符集,但 HTTP/2 头部必须使用小写,而不像 HTTP/1.x 大小写均可。

解决方案:

服务端在接收的时候,都做一下大小写转换,做下兼容处理,避免一些因不规范导致的问题出现。

总结:

对于任意网络协议,客户端在上层跟踪数据包有一定难度,所以先用抓包工具辅助是很好的习惯。

尽管各种协议更新演进,如果前端(业务代码、依赖库版本)或后端任意一方出现协议不兼容或实现不严谨,排查问题难度较高,所以应尽可能做到细致严谨。

对客户端来说,把所有HTTP的Header键字符串转换为小写,业务匹配时也用小写键名称(即equalsIgnoreCase)可同时适配 HTTP/2 和 HTTP/1.x。注意,如果转小写后出现多个相同Header,必须要求服务端修正,同时前端调整代码。

参考:

https://datatracker.ietf.org/doc/html/rfc7540#section-8.1.2

https://www.ietf.org/rfc/rfc2616.txt


举报

相关推荐

0 条评论