我们正在注册一个在线资源,该资源使用http-referer作为身份验证(我知道这是个糟糕的想法),以证明请求来自我们的intranet (由于存在更高级别的代理,因此无法获得IP地址)。
不幸的是,他们的系统可能需要一个特定的引用URL,而不是接受域。这将意味着,当我们想从不同的页面链接到资源时,我们需要向它们注册另一个URL,或者链接到有效的启动页面,它们必须再次单击。
如果我们需要沿着这条路线走下去,我想让它尽可能不引人注意,因此我想知道实现以下目标的最佳方法是什么:
http://intranet/somerandomurl有一个链接tohttp://intranet/AuthorisedUrl,它需要作为引用者tohttp://externalsite/有没有办法做到这一点,而不是字面上让人们点击一个链接?(大多数浏览器都是IE6或IE7,如果这有帮助的话,如果有些浏览器需要点击链接,但我可以使用JS,因为我对此很满意)。
发布于 2010-09-02 14:50:05
把这段代码放在链接2上。对于那些启用了JavaScript的人,
<script type="text/javascript">
window.location = "http://example.com/"
</script>这将在执行时将它们重定向到http://example.com/。尽可能早地将其放在<head>中,以便在页面加载过程中尽可能早地进行重定向。
然后,只需在页面上为那些禁用JavaScript的人提供一个手动链接。
无论哪种方式,链接2都将是外部站点的引用者。
(警告:这是一种非常非常不安全的身份验证方法。)
编辑:在javascript重定向之后,一些IE版本没有传递Referer头,这似乎存在一个已知的问题。以下是解决办法:http://webbugtrack.blogspot.com/2008/11/bug-421-ie-fails-to-pass-http-referer.html
https://stackoverflow.com/questions/3628186
复制相似问题