【问题标题】:Change referrer when redirecting重定向时更改引荐来源网址
【发布时间】:2011-04-05 01:42:15
【问题描述】:

我想要做的是使用 PHP 从网站 A 重定向到网站 B(两者都是不同的域),但我希望将 HTTP 标头中的引用者设置为网站 A(页面执行重定向)。因此,也就是说,网站 B 将网站 A 视为推荐人。

【问题讨论】:

    标签: php


    【解决方案1】:

    您可以在您的站点 A 上使用 <meta http-equiv="refresh" content="1;url=http://siteb.net"> 之类的内容。

    【讨论】:

      【解决方案2】:

      我很确定发送引荐来源网址最终取决于网络浏览器,而不是 PHP。 不过,您可能可以通过$_GET 发送地址。

      编辑:您将无法更改推荐人(误读帖子,derp)。

      【讨论】:

      • 嗯?通过$_GET发送地址?那应该如何工作?
      • 我想是这样的:header( "Location: something.php?ref=" . $_SERVER['REQUEST_URI'] );
      • 啊,这是有效的@Kevin,但它不是引荐来源标头。但根据要求,它是一个有效的选择
      【解决方案3】:

      我已经使用 localhost 和一个虚拟脚本进行了检查。即使在重定向时,浏览器也会在 HTTP 中发送引用。

      为了测试这一点,我创建了一个名为 testRefererRedirect.php 的脚本:

      <?php
      
      if($_GET['a']){
      
          if($_SERVER['HTTPS'] && $_SERVER['HTTPS'] != 'off'){
      
              echo $_SERVER['HTTP_REFERER'];
      
          }else{
      
              header('Location: https://localhost/testrefererredirect.php?a=1');
      
          }
      
      }else{
      
          echo '<a href="testrefererredirect.php?a=1">test</a>';
      
      }
      

      为了模拟跨域,我在本地服务器上使用了 HTTP 和 HTTPS。

      第一次加载时,页面将显示一个链接:我将单击此链接以允许浏览器在标题中发送引用。接下来,因为我最初在 HTTP 中加载页面,所以将调用 header 函数。最后,用于第 2 步的 HTTP 引用标头出现在第 3 步中。

      结论

      如果您在网站 A 上进行重定向,您可以安全地在网站 B 上使用 $_SERVER['HTTP_REFERER'] 来获取网站 A 的引用信息。

      【讨论】:

        猜你喜欢
        • 2013-12-06
        • 2013-12-28
        • 1970-01-01
        • 1970-01-01
        • 2011-10-19
        • 1970-01-01
        • 1970-01-01
        • 2020-10-16
        • 2011-04-10
        相关资源
        最近更新 更多