现在时间是2021年9月28日,苹果发布了最新的iPhone 13 ,与此同时还更新了IOS版本,当前最新版本为15+,我司用企业微信为依托开发企业H5应用,用安卓手机登录系统一切正常(可以登录,可以调用sdk硬件功能),但是用IOS手机根本不能登录,就提示:
根据官方的提示,说是有两种情况,一是签名有问题,二是URL有问题,我和后台同事查了半天问题,确定签名是没问题的。那就找URL的问题,最后终于发现前端登录时候会调接口,后台同事取的是header里面的“referer”字段。
正常情况下,安卓和ios15-版本的referer都是全部的(全部是指,当前访问的地址是https://xx.xx.com?code=xxxxxxxxxx&state=xxx),而IOS设备15+发送给后台的却是不完整的(只有https://xx.xx.com)
知道问题就可以解决了,既然后台同事可能因为浏览器版本问题拿不到,那我就固定死就OK了,遂在前端定义了ticketFromReferer字段,后台在之前接收referer字段的地方(应该是core)替换为ticketFromReferer字段。之后后台重启前端重新登录,一切正常,完美。
'ticketFromReferer': location.href.split('#/')[0]
问题原因:想来是因为苹果的Safari浏览器版本更新修改了什么安全规则,导致referer只能发送给后台不完整的url
祝大家调接口调得开心调得快乐!!如果解决了你的问题,请帮我点个赞吧!多谢多谢。