Як я можу передати заголовок реферала з мого https домену на http домени?


12

Мій веб-сайт 100% https. У мене є посилання на інші домени http. Заголовок реферала не встановлюється під час посилання зі сторінки https на сторінку http. З http://en.wikipedia.org/wiki/HTTP_referrer

Якщо доступ до веб-сайту здійснюється через з'єднання HTTP Secure (HTTPS), а посилання вказує на будь-яке місце, крім іншого безпечного місця, поле для рефералу не надсилається.

Я хотів би, щоб інші домени могли бачити реферала, щоб вони знали, що трафік надходить з мого домену. Чи є спосіб примусити цей заголовок чи є інше рішення?

Оновлення

Я провів кілька основних тестувань за допомогою переспрямування:

http page  -- link to http  --> 301 redirect --> http page = referrer intact
https page -- link to https --> 301 redirect --> http page = referrer blank
https page -- link to http  --> 301 redirect --> http page = referrer blank
https page -- link to http  --> 302 redirect --> http page = referrer blank

Перенаправлення втрачається при посиланні зі сторінки https на сторінку перенаправлення http в моєму власному домені. Тож немає перенаправлення на переадресацію.


Це Originмає бути недоторканим, але може не відповідати вашому випадку використання.
Pacerier

Відповіді:



8

У мене теж була ця сама проблема. Я вирішую, додавши метатег, як показано нижче, і він працюватиме лише в Chrome і Safari.

<meta name="Referrer" content="origin">

6

На жаль, ви не можете посилатись на HTTPS на сайти, що використовують HTTP. Однак ви можете робити HTTPS до HTTPS або HTTP до HTTPS.

ДЖЕРЕЛО

Клієнти НЕ повинні включати поле заголовка Referer у HTTP-запит (незахищений), якщо перенаправлена ​​сторінка була перенесена із захищеним протоколом.

Робота навколо полягатиме в тому, щоб використовувати внутрішній скрипт переадресації, який замість того, щоб посилатися на відвідувача на HTTPS, ви перенаправляєте на HTTP, а потім він переадресовує.

Наприклад:

<a href="http://www.yours.com/out.php?www.other.com">www.outboundsite.com</a> але це не використовуватиме оригінальний посилання.

Іншою можливістю є використання зворотних зворотів, а не посилань, і наскільки я знаю, це працює в HTTPS.


Моє тестування показало, що використання переадресації не працює (див. Оновлення).
Лускунчик

Використовуйте трекбеки або програйте HTTPS;)
Саймон Хейтер

1
@bybe, Ця відповідь потребує редагування. Дивіться serverfault.com/a/520603/87017 та webmasters.stackexchange.com/a/71331/7654
Pacerier

4

Мені вдалося встановити посилання зі сторінки HTTPS на сторінку HTTP на іншому домені та все ж передати URL-адресу першої сторінки як референс за допомогою наступної методики.

Визначення

Сторінка виходу: сторінка HTTPS, на якій розміщено посилання на HTTP-сторінку, що розміщується. У цьому прикладі:https://example1.com/origin.html

Цільова сторінка : сторінка HTTP, яка має доступ до рефератора вихідної сторінки. У цьому прикладі:http://example2.com/destination.html

Основний план

Це призводить до того, щоб переспрямування виходило з HTTP-версії початкової сторінки:

  1. Посилання на початковій сторінці HTTPS посилається на поточну сторінку, але додає параметр запиту для цільової сторінки [1]. наприклад:https://example1.com/origin.html?goto=http://example2.com/destination.html

  2. При натисканні на посилання сервер на example1.com перериває стандартний запит, коли параметр запиту "goto" присутній. Це тоді:

    • Зберігає параметр 'goto' у файлі cookie 'goto'.
    • Вилучає параметр і значення "goto" з URL-адреси поточного запиту
    • 302 переспрямовує на цю нову очищену URL-адресу на HTTP-версії початкового домену, тобто. http://example1.com/origin.html
  3. Сервер перевіряє кожен запит файлу cookie "goto" і, якщо він присутній, очистить файл cookie, а потім створить дуже просту сторінку переспрямування. Ця сторінка містить [2]:

    • Сценарій Javascript window.location.replace (), який переспрямовує на URL-адресу файлу cookie goto.
    • Тег Meta Refresh зі значенням URL-адреси cookie goto та затримкою на кілька секунд.
    • Посилання на URL-адресу cookie goto.

Примітки

[1] Це основне рішення є відкритим перенаправленням, і слід враховувати захист від недоброзичливців, використовуючи параметр goto query для перенаправлення UA в фішинг-атаках.

[2] Не всі веб-переглядачі надсилатимуть реферала під час переадресації через тег переадресації JS або мета-оновлення. У моєму тестуванні IE8 і нижче не передає реферату.

Я не впевнений, чи дана методика дозволить сканерам пошукових систем переходити за посиланнями. Це не важливо для моїх вимог.

Якщо в UA вимкнено файли cookie, це буде знову перенаправлено на початкову сторінку.

Дозволити з'єднання HTTP лише для переадресації

На своєму сервері у мене є правило Apache для застосування HTTPS незалежно від запиту:

<VirtualHost *:80>
    ServerName example1.com

    # if not on port 443 then 301 redirect to https while keeping any query string
    RewriteEngine              On
    RewriteCond %{HTTP_HOST}  ^example1\.com$ [NC]
    RewriteCond     %{SERVER_PORT} !443
    RewriteRule     ^(.*)$     https://%{HTTP_HOST}$1 [L,QSA,R=301]

Для того, щоб техніка перенаправлення вище працювала, мені потрібен спосіб умовно дозволити HTTP-з'єднання. Є багато способів зробити це. Я вирішив, що печиво спрацює.

<VirtualHost *:80>
    ServerName example1.com

    # if not on port 443 then 301 redirect to https while keeping any query string
    RewriteEngine              On
    RewriteCond %{HTTP_HOST}  ^example1\.com$ [NC]
    RewriteCond     %{SERVER_PORT} !443
    RewriteCond %{HTTP_COOKIE}  !disable_ssl [NC]
    RewriteRule     ^(.*)$     https://%{HTTP_HOST}$1 [L,QSA,R=301]

Файл cookie enable_ssl буде встановлено на кроці 2, а потім видалено на кроці 3.


Гаразд .... але це точно не передає " заголовок реферала ".
Pacerier


0

Схоже, те, що ви хочете, неможливо, тому можливе вирішення; якщо цільовий сайт використовує Google Analytics (або сумісну програму, я вважаю, що Piwik використовує аналогічний синтаксис, а інші пакети статистики будуть намагатися це ігнорувати), ви можете надіслати параметри відстеження, наприклад, у своєму посиланні на example.com

http://www.example.com/?utm_campaign=spring&utm_medium=referral&utm_source=exampleblog

це відображатиметься в їхній GA з деталями, переконайтеся, що вибирати значення, які навряд чи хтось використовуватиме, щоб ви не змушували їх конфліктувати / або ховати трафік за кимсь іншим

Google зробить тут зручний конструктор URL-адрес http://support.google.com/analytics/answer/1033867?hl=uk

Оновлення - повторно: етикет

Не знаючи більше про природу руху, я можу говорити лише загально / особисто ...

етикет завжди буде на очах у глядача. Без цього я думаю, що в GA, принаймні, це, мабуть, виявиться прямим, або, можливо, (жоден набір), який би перекосив їхні фігури, щоб зробити їх схожим, що їхній бренд був більшим, ніж він є. Особисто я віддаю перевагу ретельно підібраній кампанії, щоб я знав, звідки йде трафік.

Ви також можете поглянути на це, якщо ви навряд чи надішлите їм трафік, вони, ймовірно, не помітять, якщо ви їх надішлите багато, то, напевно, вони не скаржаться! Якщо вони це роблять, то зазвичай ви можете знайти когось іншого, на котрий надаватимете безкоштовний трафік!

і якщо ви дуже конкретні, це не повинно викликати проблем; кампанія як назва вашого сайту та джерело, як, можливо, розділ вашого сайту?

http://www.example.com/?utm_campaign=mygreatsite.com&utm_medium=referral&utm_source=specialoffers

Гарна ідея! Я думав над цим вирішенням, але цікавився, чи є їхні "правила" щодо здійснення цього з мого кінця. Зазвичай ці параметри запиту додаються стороннім веб-сайтом, щоб вони могли відслідковувати свої кампанії тощо. Чи вважатиметься такий підхід поганою практикою?
Лускунчик
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.