如何在Cloudflare Workers中不释放301 https重定向上的引用值

时间:2019-04-27 17:03:04

标签: http http-status-code-301 cloudflare http-referer cloudflare-workers

Am尝试使用cloudflare工作者通过301重定向将Ref(f)erer从HTTPS域A传递到HTTPS域B。

1)用户在浏览器地址字段中输入https://domainA.com,这样的请求标头将发​​送到服务器:

Request headers, from Chrome DevTools

然后由此类Cloudflare工作者处理此请求:

<...>
return new Response("Will Redirect", {
status: 302,
statusText: 'Found',
headers: {
  Location: "https://domainB.com",
  "Referrer-Policy": "unsafe-url"
 }
})
<...>

此代码生成这样的HTTP响应:

enter image description here

“到目前为止一切都很好”-引荐来源网址标头已设置并显示,但在请求/响应标头之前,Chrome会在同一请求上显示“常规”信息:

enter image description here

据我了解,^是请求/响应组合的快速摘要。此“引荐来源网址政策”在哪里:no-referrer-when-downgrade行到达那里?是Chrome的默认Request参数,还是Chrome默认在响应时添加它?还是这些是Cloudflare的默认设置?我想这是我无法通过推荐人的潜在原因之一。

然后302重定向加载domainB,此请求由第二个工作程序处理:

<...>
let refr = request.headers.get('Referer')
let resp = new Response(`Testing referer: ${refr}`)
resp.headers.set('Referrer-Policy', 'unsafe-url')
return resp
<...>

第二个请求/响应如下:

enter image description here

但是domainB的响应如下:

enter image description here

尽管我期望看到Testinf推荐人:domainA.com。我将如何实现?

谢谢!

1 个答案:

答案 0 :(得分:0)

好吧,事实证明您不能确定是否将传递Referer,因为它完全取决于访客浏览器。建议的方法是在301重定向位置中使用domainB.com?domainid=xyz,并确保第二个域知道xyz代表domainA。