Как не потерять значение реферера при 301 перенаправлении https в Cloudflare Workers

Я пытаюсь передать Ref (f) erer через перенаправление 301 с HTTPS domainA на HTTPS domainB с помощью рабочих облачных приложений.

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-ответ:

введите здесь описание изображения

Казалось бы, «пока все хорошо» - заголовок политики реферера установлен и появляется, но до заголовков Request / Reponse Chrome показывает «General» часть информации по тому же запросу:

введите здесь описание изображения

Насколько я понимаю, ^ - это краткое описание комбинации запрос / ответ. Куда попала эта политика реферера: строка no-referrer-when-downgrade? Это параметр запроса Chrome по умолчанию или Chrome по умолчанию добавляет его в ответ? А может это какие-то настройки Cloudflare по умолчанию? Думаю, это одна из возможных причин, по которой я не могу пройти реферер.

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

<...>
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. Как мне этого добиться?

Спасибо!


person toinbis    schedule 27.04.2019    source источник


Ответы (1)


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

person toinbis    schedule 28.04.2019