Как не потерять значение реферера при переадресации 301 https в Cloudflare Workers - PullRequest
1 голос
/ 27 апреля 2019

Пытаюсь передать Ref (f) erer через 301 перенаправление из домена HTTPSA в домен HTTPSB, используя работников cloudflare.

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

Как я понимаю, ^ - это краткое изложение комбинации запрос / ответ. Где эта Политика Реферера: линия "нет ссылки на переход"? Это параметр запроса Chrome по умолчанию или Chrome добавляет его в ответ по умолчанию? Или, может быть, это некоторые настройки по умолчанию в Cloudflare? Я полагаю, что это одна из потенциальных причин, по которым я не могу передать Referrer.

Затем перенаправление 302 загружает домен B, и этот запрос обрабатывается вторым работником:

<...>
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

Но ответ от домена B выглядит следующим образом:

enter image description here

Хотя я ожидаю увидеть реферера Testinf: domainA.com. Как бы я этого достиг?

Спасибо!

1 Ответ

0 голосов
/ 28 апреля 2019

Хорошо, оказывается, вы не можете быть уверены, что Referer будет пройден, так как это полностью зависит от браузера посетителей.Рекомендуемый метод - использовать domainB.com?domainid=xyz в месте перенаправления 301 и убедиться, что второй домен знает, что xyz означает домен A.

...