我正在编写一个页面,该页面链接到另一台服务器上的一些音乐文件,该服务器阻止了外部referer的访问。该网站还允许直接访问文件(通过在浏览器地址栏粘贴url)。
经过几个小时的搜索和尝试,我打算放弃,但我震惊的事情发生了!当你通过Gmail发送链接时,点击它,Gmail会将你重定向到另一个页面,然后文件开始下载。我的意思是Gmail在没有设置任何引用的情况下进行重定向。我如何在代码中做到这一点?
tl;dr:当用户点击链接时,我想将用户重定向到外部url,而不发送任何referrer数据!
不幸的是,这个实现不一致。
如此处所示
- 在以下浏览器下更改
window.location.href
时设置HTTP引用头(HTTP- referer):- MSIE 9(但可能是9以上的任何版本)
- Firefox(至少3.0,3.5,4.0,5.0,但很可能是所有版本)
- Chrome(至少9个,但很可能是所有版本)
- Safari(至少5个,但很可能是所有版本)
- Opera(至少11个,但很可能是所有版本)
-
MSIE(至少6,7,8):当改变
window.location.href
时,引用者不设置
你可以考虑通过<iframe>
点击它,但你仍然会在不同的浏览器上看到不同的结果。
另一个建议是通过您的服务器代理请求,而不是在执行请求时设置referrer。如果您的带宽有限,这可能是一个问题。