【问题标题】:Prevent sending referrers when clicking links from my site with an exception for one domain单击我的站点中的链接时防止发送引荐来源网址,但一个域除外
【发布时间】:2018-04-09 11:32:42
【问题描述】:

让我们承认,出于安全或隐私原因,我想将我的referrer policy 全局设置为"no-referrer"

例如,使用 Apache 的 .htaccess

Header always set Referrer-Policy no-referrer

或 IIS'web.config's

<configuration>
    <system.webServer>
        <httpProtocol>
            <customHeaders>
                <add name="Referrer-Policy" value="no-referrer" />
             </customHeaders>
        </httpProtocol>
    </system.webServer>
</configuration>

换句话说,我希望针对每个网页在全球范围内执行此策略,并且我在服务器级别执行此策略。

但是,对于一个特定的域(比如https://validator.w3.org/),我想发送引荐来源网址(例如,使用方便的url https://validator.w3.org/check?uri=referer)。

我可以使用实验性的referrerpolicy attribute of links,但我不知道该属性的支持程度如何。我也不知道这样的属性是否可以覆盖服务器的设置。

link type 'norefferer' 属性seems to be well supported,但我想实现相反的效果!

除了指向特定域的链接之外,我如何才能全局禁止发送引荐来源网址?


免责声明:该问题的(变体)发布在webmasters.stackexchange.com。尽管有赏金,但它在 2 周内只有 100 次观看,并且只提供了 one answer。这个答案比其他任何东西都更像是一个“概念证明”,并且没有涵盖“它是否覆盖了服务器的配置?”这个问题的方面。

【问题讨论】:

    标签: apache iis policy http-referer


    【解决方案1】:

    由于Referrer-Policy: no-referrer 标头将指示用户代理根本不发送Referer 标头,因此您几乎无能为力而无需触及交付的内容。通常情况下,服务器不知道内容包含哪些类型的链接,Referrer-Policy 标头的选项仅处理请求的来源。

    我认为唯一可行的选择是重写内容。由于noreferrer 属性得到广泛支持,您可以使用Apache's mod_substitute,例如。

    您需要制定一个合适的正则表达式来匹配您想要包含noreferrer 属性的链接。 &lt;a\s+[^&gt;]*href="(http://)?www.google.com[^"]*"&gt; 之类的内容将匹配指向 google 主页的 a 标记。

    【讨论】:

      猜你喜欢
      • 2011-06-29
      • 2010-10-28
      • 2011-01-20
      • 1970-01-01
      • 2014-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多