前端 | 在iOS11上开发H5页面踩坑记(一)

前端 | 在iOS11上开发H5页面踩坑记(一)_第1张图片
HTTP.png

遇到的问题

在发送请求时,Accept-Language 不小心传了一个错误的字符串 ,如图

前端 | 在iOS11上开发H5页面踩坑记(一)_第2张图片
image.png

在安卓和iOS10系统中都不报错,但是在iOS11中报错

分析

当Accept-Language的值有特殊符号,比如&,=,iOS11系统的浏览器并不会做处理,而是把它当做用户自定义的值,从 浅谈 preflight request一文中可以看出,这会触发浏览器发送预检请求,因为服务器端不允许Accept-Language的值为zh-hans&from=timeline&isappinstalled=0,所以就报错了

而iOS10或者安卓系统的浏览器当判断Accept-Language的值有特殊符号时,会取特殊符号前的字符串当做实际传到服务器的值,在本例中就是 zh-hans,这对浏览器来说是个合法值,并且不是用户自定义的值,所以不会发送预检请求,就顺利请求成功了

前端 | 在iOS11上开发H5页面踩坑记(一)_第3张图片
image.png

你可能感兴趣的:(前端 | 在iOS11上开发H5页面踩坑记(一))