问题回顾:
起因是在H5项目的一个迭代版本测试过程中,发现在vivo手机自带浏览器里,登录状态一直报错无法正常登录,在其他浏览器,其他设备都正常。这个问题目前只是在vivo手机浏览器里发现的。
通过排查发现是token的问题。前端排查没发现问题,token正常传递给后端的,后端排查发现没有接收到token。最后通过打印日志记录发现token字段的大小写不一致,通过vivo手机浏览器传递过去的token
变成了Token
,首字母大写了,导致后端没正确接收到token值。
HTTP RFC 里规定,大小写不敏感,在Header里自定义字段名的时候,token
是用的小写,后端也通过小写的字段名来接收。最后解决此问题是在后端对字段做了兼容处理。
HTTP/1.x 大小写不敏感,但现实是需要做到敏感的。
现在有的服务逐步在开启HTTP/2了,HTTP/2 和 HTTP/1.x 同样使用 ASCII 字符集,但 HTTP/2 头部必须使用小写,而不像 HTTP/1.x 大小写均可。
不管是否大小写,保险起见,最好还是服务端在接收的时候,都做一下大小写转换,做下兼容处理,避免一些因不规范导致的问题出现。
https://www.ietf.org/rfc/rfc2616.txt
https://datatracker.ietf.org/doc/html/rfc7540#section-8.1.2
转载请注明带链来源:春语精椿