记录一个极其sb的问题,问题的产生请听我细细道来:

博主闲的无事接手了一个烂尾楼项目,uniapp开发的h5页面,经过一番去其糟粕和添砖加瓦,项目终于能走完基本流程;然而正当博主准备会所一波时,客户发来信息,他的手机上某个功能接口没有数据;有时bug就是来得这么突然,得,改呗。

本地调试时,博主发现了不对劲,这不正常嘛,接口返回数据呈现一切ok呀,然后用博主的手机测试生产环境也是一切ok呀。客户的手机是苹果,博主的手机的是安卓,这就不得不考虑到烦人的兼容性问题了;然而,一波检查下来,代码里没有用到需要兼容的地方啊,都是很基本的代码。由于系统在支付宝客户端中打开的,博主目前也不知道如何调试支付宝内置浏览器的接口;于是只能把接口输出参数打印到页面上(沙雕操作请勿学习),一通检查下来发现,安卓手机、苹果8以及以下的手机都没问题,苹果10以及以上型号都报错404。这是什么情况?博主当时心里有点慌,没谱;修改封装的请求接口也没用,这不完犊子了嘛;正当博主不知道咋办的时候,博主注意到返回的404信息中出现了这个东西:

h5页面ios打不开_node.js

%20不就是urlencode对空格的编码嘛,意思就是请求的url中出现了空格(由于之前的接口就是别人写好的,我只是调用,没怎么细看那些url),于是博主立马顺藤摸瓜找到了那个请求地址:

h5页面ios打不开_node.js_02

好家伙,我直接好家伙。

去掉空格,打包部署,终于搞定了。

万恶之源,就是这个空格。不知道为什么安卓和苹果8对这种空格是可以自动忽略的,而苹果10以上的会识别这个空格,从而导致接口地址错误。不单单是在url中,在uniapp的表达式中多余的空格也会被苹果10以上的手机误识别

h5页面ios打不开_node.js_03

有感而发写了一大堆,除了提出的问题之外,细心以及规范代码也是在开发中极其重要的。