问题描述:
有一个网页https://www.e.cn/EE/a,进入网页以后直接运行window.location.href=https://www.b.cn/aa/bb,测试是可以正常跳转的,但是个别用户比如使用了360浏览器,在有些情况下会跳转到https://www.e.cn/EE/https%3A%2F%2Fwww.b.cn%2Faa%2Fbb,导致没有跳转成功访问失败。
可能的问题原因:
- 浏览器的安全或防钓鱼功能被开启,导致对跳转URL进行了编码。
- 浏览器限制了从 HTTPS 页面跳转到 HTTP 页面。
- 浏览器限制了跳转目标域名与当前页面不同的跨域跳转。
- 某些浏览器版本存在Bug,处理window.location.href的逻辑有误。
原因1的解决办法:
使用decodeURIComponent()函数对跳转的URL进行解码,以确保URL被正确地跳转。修改代码如下:
window.location.href = decodeURIComponent('https://www.b.cn/aa/bb');
原因2也很好解决,http变成https就行了。
原因3和4就只能换浏览器了,还没想到好办法解决。