【问题标题】:Changing http-referer via a redirect通过重定向更改 http-referer
【发布时间】:2010-09-02 14:38:15
【问题描述】:

我们正在注册一个使用 http-referer 作为身份验证的在线资源(我知道这是个坏主意),以证明请求来自我们的 Intranet(IP 地址不可用,因为有更高级别的代理) .

不幸的是,他们的系统可能需要特定的引用 URL,而不是获取域。这意味着当我们想从不同的页面链接到资源时,我们需要向他们注册另一个 URL,或者链接到他们必须再次点击的有效启动页面。

如果我们需要沿着这条路线走,我想让它尽可能不引人注意,因此想知道实现以下目标的最佳方法是什么:

  1. http://intranet/somerandomurl 有一个链接到
  2. http://intranet/AuthorisedUrl 需要成为引荐来源地
  3. http://externalsite/

有没有什么方法可以做到这一点,而不需要让人们点击链接? (如果有帮助的话,绝大多数浏览器都会是 IE6 或 IE7,如果有些人需要点击链接,但我可以使用 JS,我可以接受)。

【问题讨论】:

    标签: javascript redirect referrer http-referer


    【解决方案1】:

    将此代码放在链接 2 上。对于启用 JavaScript 的用户,

     <script type="text/javascript">
    
    window.location = "http://example.com/"
    
    </script>
    

    这将在执行后立即将它们重定向到http://example.com/。尽可能早地将其放在&lt;head&gt; 中,以便在页面加载时尽早进行重定向

    然后,只需在页面上为禁用 JavaScript 的用户添加一个手动链接。

    无论哪种方式,链接 2 都将成为外部站点的引荐来源网址。

    (警告:这是一种非常非常不安全的身份验证方法。)


    编辑:似乎存在一个已知问题,即某些 IE 版本在 javascript 重定向后未传递 Referer 标头。这是解决方法:http://webbugtrack.blogspot.com/2008/11/bug-421-ie-fails-to-pass-http-referer.html

    【讨论】:

    • 我认为它必须是客户端 JS。但是,是否存在浏览器不一致的问题,有些会根据需要更改引用者,但有些则不会? (是的,我同意这个警告,但这不是我们的系统,所以我无能为力)。
    • 不应该有任何浏览器不一致,但您可以在这里进行测试:htmlto.com/redirect/1.html。单击该链接将带您到 2.html,它将 Javascript 重定向到 3.php,它设置为回显 HTTP_REFERER。它应该说 2.html;如果它曾经显示 1.html,则说明您的浏览器不一致。
    • 我的立场是正确的; IE 不会通过 JavaScript 重定向传递 http_referer;请参阅我的修改以进行修复。
    • 测试不起作用(document.body 引用在 DOM 中加载了 body 元素之前出现),但 IE 的问题是需要的主要问题,因此接受了答案。
    • 还是不行。脚本必须放在正文标签中或放在正文中调用的头部函数中,将其作为 webbugtrack 上的函数也具有可重用的优点。我还用 IE 条件 cmets 替换了浏览器嗅探。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-30
    • 2017-10-14
    相关资源
    最近更新 更多