2

我正在尝试使用 cloudflare 工作人员通过 301 重定向从 HTTPS 域A 到 HTTPS 域B 传递 Ref(f)erer。

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

来自 Chrome DevTools 的请求标头

然后,此请求由此类 Cloudflare 工作人员处理:

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

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

在此处输入图像描述

看起来“到目前为止一切都很好” - 推荐人策略标头已设置并正在出现,但在请求/响应标头之前 Chrome 显示同一请求的“常规”信息:

在此处输入图像描述

据我了解,^ 是请求/响应组合的快速摘要。此推荐人政策:no-referrer-when-downgrade 行在哪里到达那里?是 Chrome 的默认请求参数还是 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
<...>

第二个请求/响应如下:

在此处输入图像描述

但是来自 domainB 的响应如下所示:

在此处输入图像描述

虽然我期待看到 Testinf 推荐人: domainA.com 。我将如何实现这一目标?

谢谢!

4

1 回答 1

0

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

于 2019-04-28T12:08:08.993 回答