遇到的问题
在发送请求时,Accept-Language
不小心传了一个错误的字符串 ,如图
在安卓和iOS10系统中都不报错,但是在iOS11中报错
分析
当Accept-Language的值有特殊符号,比如&
,=
,iOS11系统的浏览器并不会做处理,而是把它当做用户自定义的值,从 浅谈 preflight request一文中可以看出,这会触发浏览器发送预检请求,因为服务器端不允许Accept-Language的值为zh-hans&from=timeline&isappinstalled=0
,所以就报错了
而iOS10或者安卓系统的浏览器当判断Accept-Language的值有特殊符号时,会取特殊符号前的字符串当做实际传到服务器的值,在本例中就是 zh-hans
,这对浏览器来说是个合法值,并且不是用户自定义的值,所以不会发送预检请求,就顺利请求成功了
网友评论