Failed to set referrer policy错误

21

我在处理一个WordPress网站时,在我的Chrome控制台中遇到了以下错误。

无法设置引用来源策略:值 'http://example.com/comic/' 不是 'always','default', 'never','no-referrer','no-referrer-when-downgrade','origin', 'origin-when-crossorigin'或'unsafe-url'之一。 引用者策略保持不变。

它指的是HTML文档的<head>中的这一行...

<meta name="Referrer" content="http://example.com/comic/" />

我正在通过 http 而不是 https 查看该页面。

是什么原因导致了这个问题,我该如何解决?

6个回答

32

进入您的 .htaccess 文件并更改以下内容:

Header set Referrer-Policy ""

Header set Referrer-Policy "origin"

那应该解决问题了。

原因很可能是因为您在 .htaccess 文件上没有正确的权限,这样 w3tc 就无法进行所需的更改。


10

Chrome检查控制台在安装了W3 Total Cache的WordPress网站上显示了相同的错误。 "Failed to set referrer policy: The value '' is not one of 'no-referrer', 'no-referrer- when-downgrade', 'origin', 'origin-when-cross-origin'"

我尝试根据上面的答案更新.htaccess文件。这修复了Chrome检查控制台的错误,但几分钟后又出现了。

检查W3 Total Cache性能仪表盘->浏览器缓存->引荐政策->指令,此条目显示为空白。

从下拉菜单中选择'origin'会导致.htaccess与相同值'origin'更新。 W3 Total Cache Pluginn Console


10

以下是从规范中获取的定义:

  

引荐策略(Referral policy)修改了在获取子资源、预取或执行导航时用于填充Referer标头的算法。每个环境设置对象都有一个用于获取引荐策略的算法,该算法默认用于其请求客户端的所有请求。

因此,引荐策略涉及浏览器向服务器发送检索外部资源所需的与URL相关的信息。

规范中列出的content属性选项包括:

  • no-referrer表示禁止从特定请求客户端到任何源发送带有引荐信息的请求。标头将完全忽略。

  • no-referrer-when-downgrade不会将Referrer标头发送到非事先认证的URL (如果https URL链接到http URL,则不会发送标头)。

  • same-origin策略指定在从特定请求客户端进行同源请求时将发送已削除用作引荐信息的完整URL,而跨源请求将不包含引荐信息。

  • origin发送被删除完整URL的方案、主机和端口(基本上是子域)作为引荐,即https://moz.com/example.html会简单地发送https://moz.com

  • origin-when-cross-origin将描述在origin中的格式发送到跨源,而对于同一原点请求,则发送已削除的完整URL。

  • unsafe-url策略指定从特定请求客户端发出的跨域请求和同源请求,一起发送用作引用的完整URL(已剥离)。
    由于它会将受 TLS 保护的资源的来源和路径泄露到不安全的来源,因此它是不安全的。

  • 空字符串 "" 对应于没有引用者策略,导致回退到在其他地方定义的引用者策略,或者在没有这样的高级策略可用的情况下,默认为no-referrer-when-downgrade

  • always的行为类似于unsafe-url


  • 请注意,某些值在基本浏览器中得到支持,特别是当它们包含在HTTP头中时,如same-origin、strict-origin和strict-origin-when-cross-origin。有关详细信息,请参阅https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy#Browser_compatibility。 - HBCondo
    2
    以防万一,如果你在这里但是你的referrer policy看起来没问题,但是你的URL包含google-ad-words或其他社交内容,那么广告拦截器可能是罪魁祸首。尝试禁用它。 - Sar009

    10

    您可以在 .htaccess 文件中手动查找并更改以下内容:

    <IfModule mod_headers.c>
        Header set Referrer-Policy ""
    </IfModule>
    
    <IfModule mod_headers.c>
        Header set Referrer-Policy "origin"
    </IfModule>
    

    1
    它对我有效。我会点赞的。 - Naren Verma

    1
    "

    "Referer"作为一个标头,拼写时不包含双R。也许如果有双R的话,它会匹配不同于你所指的标头。

    "

    0
    在我的案例中,API URL 缺少 www.,而表单页面中存在 www.。请确保你的 API URL 同样包含 www.,如果页面中有的话。

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接