举例:
跳转链接:
https://xxx.com/#/xxxx?a=b&c=d
后端 直接跳转 Safari浏览器 后url #号后面的会被Safari拦截掉:
https://xxx.com/#/
解决办法:
在vue cli3.x项目的,public文件夹新建一个redirect.html和index.html放在同一级,同一个文件夹内
redirect.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
(function(){
var currentSearch = window.location.search
window.location.href = '你要跳转的域名'+currentSearch
})()
</body>
</html>
原因:
safari会认为#号后面的内容是hash值,是前端路由,不能用于后端接口,(而后端直接访问会被解释为跳转的链接是一个接口)所以会过滤掉#号后面的内容。而前端在本域名内之间切换没有问题。
使用后端跳转的原因:
前端跨域名跳转,#号会被转义,跳转链接不被safari浏览器识别。导致页面404
根据这样的情况,还有哪些解决办法? 请大神们多多评论!