基于引荐来源网址重定向

Posted

技术标签:

【中文标题】基于引荐来源网址重定向【英文标题】:Redirect based on referrer URL 【发布时间】:2013-12-28 11:13:59 【问题描述】:

在我的网站中,我有一个受密码保护的页面,其中包含一些指向其他网站的链接,这些网站也是由我自己运营的,这些网站无法受密码保护。我想将 html 代码放在我运营的其他网站之一上,以检查到达该页面的人是否是从 'Links Page' 的 URL 引用的。

(我知道这不是一个安全的选择)

总结:

If Referrer = 'Links Page URL' *then* Do nothing *Else* Redirect: www.google.com.

有人知道我可以复制并粘贴到我的网站的简单 HTML/javascript 代码吗?

【问题讨论】:

【参考方案1】:
if (document.referrer !== "http://www.***.com") 
    window.location.href = "http://www.google.com";

或者您可以使用正则表达式来检查引荐来源。

无论如何,这个解决方案真的非常不安全。您可以在浏览器中关闭 JavaScript 并且不会被重定向...

【讨论】:

【参考方案2】:

试试这个

    function url(url)
      return url.match(/:\/\/(.[^/]+)/)[1];
    

    function check()
    
      var ref = document.referrer;
      if(url(ref) =='www.google.com')
      
          // do something
      
      else
      
         // redirect
         window.location.href = 'http://yourDomain.com';
      
   

【讨论】:

【参考方案3】:

我发现 document.referrer 对我不起作用,但 location.href 有效:

if (location.href != "http://yoursite/index.html") 
    location.replace("http://yoursite/index.html");

【讨论】:

这没有回答问题,因为location.href 获取当前页面的 URL,而不是 OP 请求的引用页面的 URL。出于这个原因,我投了反对票。

以上是关于基于引荐来源网址重定向的主要内容,如果未能解决你的问题,请参考以下文章

基于 IP 和引荐来源的 PHP 重定向

在javascript中获取引荐网址

如何在 playframework 中获取引荐来源网址

强制 Shibboleth 在身份验证后重定向到特定 URL

如何在 ASP.NET MVC 操作中获取引荐来源网址?

停止将引荐来源网址发送到目的地的链接