跨域名跳转如何避免移动端自动打开目标站点APP、保持在浏览器内运行
问题根因
该问题和你使用的重定向方式无关,本质是Kayak站点配置了iOS Universal Link、安卓App Link的移动端深度关联规则,系统识别到对应域名的跳转请求后,会优先唤起已安装的官方APP,而非在浏览器中完成页面导航
可用解决方案
- 方案1:纯前端表单提交跳转(兼容性最高,无需后端配合)
绝大多数移动端系统会将表单提交行为判定为普通页面导航,不会触发深度链接的APP唤起逻辑,可直接替换你当前的所有重定向逻辑,代码示例:
// 自动跳转逻辑,对应原有1秒延迟的meta refresh配置 setTimeout(() => { const redirectForm = document.createElement('form'); redirectForm.action = 'https://www.kayak.com'; redirectForm.method = 'GET'; redirectForm.target = '_self'; document.body.appendChild(redirectForm); redirectForm.submit(); }, 1000);
方案2:搭配自定义参数规避深度匹配
如果少量机型仍存在唤起问题,可以在目标URL后添加无意义的自定义查询参数,破坏目标站点的深度链接匹配规则:https://www.kayak.com?no_deeplink_redirect=1方案3:PHP后端重定向补充配置
如果采用后端重定向,可以在返回302响应时添加无来源响应头,进一步降低APP唤起概率:
<?php header("Referrer-Policy: no-referrer"); header("Location: https://www.kayak.com?no_deeplink_redirect=1"); exit(); ?>
内容的提问来源于stack exchange,提问作者Tipxbomb
相关产品推荐
相关产品推荐

