因为跨域,在复杂访问中浏览器内核会先执行OPTIONS指令,查询支持那些method和header是支持得,在这里WKWebView应该有bug,对于Access-Control-Allow-Headers为“*”时,默认就是返回Network Error,这个不知道什么原因。
如果我们设置返回Headers为具体值以后,会发现POST方法没有问题而PUT方法还是会返回Network Error,经过排查发现时Access-Control-Allow-Methods为“*”引起得,需要指定具体得方法。
通过上面得测试我们得到两种解决方案:
1.不使用PUT方法,设置如下(根据项目情况而定):
Access-Control-Allow-Headers=Accept,Content-Type,Authorization,Origin
2.支持POST和PUT方法,设置如下(根据项目情况而定):
Access-Control-Allow-Headers=Accept,Content-Type,Authorization,Origin Access-Control-Allow-Methods=GET,POST,PUT,DELETE,OPTIONS
如果使用Vue而且同时集成router,还有更加恶心的问题,正常打开没有问题,返回到这个页面就有问题。
1.通过location.href跳转到其他页面,这个页面嵌套Axios请求,返回到这个页面也会提示Network Error的错误。伪代码如下
getBalancePeriod().then((res)=> {
getBalanceData(res.period).then((res)=> {
});
});
但是如果用this.$router.push(path)的方式跳转页面就没有问题,很不明白这个是为什么,留个记号,等待有缘人来解答。