为什么跳转外链需要一个中间页提示?
背景
在很多网站,比如掘金、知乎等,点击外链时,都会跳到一个中转页,提示你要跳转第三方页面,为什么需要这样处理?
为什么
安全问题
在以前的浏览器版本,通过点击链接时包含 _blank 属性的,跳转后,第三方网站可以通过 window.opener
获取到跳转前网站的 window,从而可以通过代码的方式控制前网站。这个漏洞在后续被修复了。
现在要获取到 window.opener
对象,有多个限制:
window.open
和a
标签,需要包含rel=opener
属性- 跳转的链接需要同源
并且通过这种中间缓冲,让用户手动复制粘贴、从而打开网站的方式,可以屏蔽调 referrer
,让第三方网站不知道来源网站
更好的控制
- 在跳转前有一个中间缓冲,网站可以提前进行安全检查,并通过前端提示的方式,更好的告知用户跳转风险
- 方便数据统计
- 可以对跳转的 URL 进行控制,比如增加一些业务参数
拦截
对于 C 端网站,可以通过这种方式拦截竞争对手
如何实现
通常有这种链接跳转到第三方网站的,大部分都是用户输入的富文本内容,这时候可以在用户提交内容的时候进行文本替换即可。