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

问题描述 投票:1回答:1

我试图通过使用cloudflare worker从HTTPS域重定向到HTTPS域来传递Ref(f)erer。

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 line到达那里?是Chrome的默认Request参数还是Chrome默认将其添加到响应中?或许这些是一些Cloudflare默认值?我想这是我无法通过Referrer的潜在原因之一。

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

<...>
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。我怎么做到这一点?

谢谢!

http http-status-code-301 cloudflare http-referer cloudflare-workers
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.