<meta name='referrer'> 有效,Referrer-Policy header 无效
<meta name='referrer'> works, Referrer-Policy header does not
我们正在将我们的联邦政府网站移至 https-only。我们已经收到来自我们 link 网站的投诉,称我们的引荐来源网址已消失,而这些网站仅使用 http。这是因为 https->http 降级默认情况下会隐藏引荐来源网址。
我们正在尝试使用 HTTP 请求 header Referrer-Policy: origin-when-cross-origin
,但它似乎不起作用。但是,放置 <meta name='referrer' content='origin-when-cross-origin'>
确实为大多数浏览器提供了正确的行为。
我们正在设置 header:
<pre>
$ curl -sI https://www.ncbi.nlm.nih.gov/corecgi/tests/testref.cgi
HTTP/1.1 200 OK
Date: Fri, 04 Nov 2016 20:53:38 GMT
Server: Apache
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Content-Security-Policy: upgrade-insecure-requests
Referrer-Policy: origin-when-cross-origin
Content-Security-Policy-Report-Only: default-src https:; script-src https: 'unsafe-inline' 'unsafe-eval'; font-src https: data:; img-src https: data:; style-src https: 'unsafe-inline'; report-uri https://www.ncbi.nlm.nih.gov/corecgi/csp/csp.cgi
Referrer-Policy: origin-when-cross-origin
Access-Control-Allow-Methods: POST, GET, PUT, OPTIONS, PATCH, DELETE
Access-Control-Allow-Origin:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: X-Accept-Charset,X-Accept,Content-Type,X-Requested-With,NCBI-SID,NCBI-PHID
Content-Type: text/html
Vary: Accept-Encoding
X-UA-Compatible: IE=Edge
X-XSS-Protection: 1; mode=block
</pre>
但是 header 不起作用:
试试这个:https://www.ncbi.nlm.nih.gov/corecgi/tests/testref.cgi
请注意 https->http 降级 link 发送空白 header
然而 <meta>
元素给出了所需的行为:
https://www.ncbi.nlm.nih.gov/corecgi/tests/testref.cgi?meta=true
有没有其他人遇到并解决了这个问题?
看起来 Chrome 即将支持 Referrer-Policy header:
- https://bugs.chromium.org/p/chromium/issues/detail?id=619228
- https://www.chromestatus.com/feature/5639972996513792
它将在 Chrome 56 稳定版中可用。自 Chrome 53 以来,它一直在标志后面,因此您可以 运行 Chrome 和 --enable-experimental-web-platform-features
在那里尝试一下。
Referrer-Policy header 将在 Firefox 50 中提供支持:
我们正在将我们的联邦政府网站移至 https-only。我们已经收到来自我们 link 网站的投诉,称我们的引荐来源网址已消失,而这些网站仅使用 http。这是因为 https->http 降级默认情况下会隐藏引荐来源网址。
我们正在尝试使用 HTTP 请求 header Referrer-Policy: origin-when-cross-origin
,但它似乎不起作用。但是,放置 <meta name='referrer' content='origin-when-cross-origin'>
确实为大多数浏览器提供了正确的行为。
我们正在设置 header:
<pre>
$ curl -sI https://www.ncbi.nlm.nih.gov/corecgi/tests/testref.cgi
HTTP/1.1 200 OK
Date: Fri, 04 Nov 2016 20:53:38 GMT
Server: Apache
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Content-Security-Policy: upgrade-insecure-requests
Referrer-Policy: origin-when-cross-origin
Content-Security-Policy-Report-Only: default-src https:; script-src https: 'unsafe-inline' 'unsafe-eval'; font-src https: data:; img-src https: data:; style-src https: 'unsafe-inline'; report-uri https://www.ncbi.nlm.nih.gov/corecgi/csp/csp.cgi
Referrer-Policy: origin-when-cross-origin
Access-Control-Allow-Methods: POST, GET, PUT, OPTIONS, PATCH, DELETE
Access-Control-Allow-Origin:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: X-Accept-Charset,X-Accept,Content-Type,X-Requested-With,NCBI-SID,NCBI-PHID
Content-Type: text/html
Vary: Accept-Encoding
X-UA-Compatible: IE=Edge
X-XSS-Protection: 1; mode=block
</pre>
但是 header 不起作用:
试试这个:https://www.ncbi.nlm.nih.gov/corecgi/tests/testref.cgi 请注意 https->http 降级 link 发送空白 header
然而 <meta>
元素给出了所需的行为:
https://www.ncbi.nlm.nih.gov/corecgi/tests/testref.cgi?meta=true
有没有其他人遇到并解决了这个问题?
看起来 Chrome 即将支持 Referrer-Policy header:
- https://bugs.chromium.org/p/chromium/issues/detail?id=619228
- https://www.chromestatus.com/feature/5639972996513792
它将在 Chrome 56 稳定版中可用。自 Chrome 53 以来,它一直在标志后面,因此您可以 运行 Chrome 和 --enable-experimental-web-platform-features
在那里尝试一下。
Referrer-Policy header 将在 Firefox 50 中提供支持: