Come posso passare l'intestazione del referrer dal mio dominio https ai domini http?


12

Il mio sito Web è 100% https. Ho collegamenti ad altri domini http. L'intestazione del referrer non è impostata quando si collega da una pagina https a una pagina http. Da http://en.wikipedia.org/wiki/HTTP_referrer

Se si accede a un sito Web da una connessione HTTP sicura (HTTPS) e un collegamento punta ovunque, tranne che in un'altra posizione sicura, il campo referer non viene inviato.

Preferirei che altri domini possano vedere il referrer in modo che sappiano che il traffico proviene dal mio dominio. C'è un modo per forzare questa intestazione o c'è un'altra soluzione?

Aggiornare

Ho fatto alcuni test di base usando un reindirizzamento:

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

Il referrer viene perso durante il collegamento da una pagina https a una pagina di reindirizzamento http sul mio dominio. Quindi non c'è referrer sul reindirizzamento.


Il Origindovrebbe essere integro, non può andare bene il vostro caso d'uso però.
Pacerier,

Risposte:



8

Ho avuto anche questo stesso problema. Risolvo aggiungendo meta tag come di seguito e funzionerà solo in Chrome e Safari.

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

6

Purtroppo non è possibile fare riferimento su HTTPS a siti tramite HTTP. È comunque possibile eseguire da HTTPS a HTTPS o da HTTP a HTTPS.

FONTE

I client NON DOVREBBERO includere un campo di intestazione Referer in una richiesta HTTP (non sicura) se la pagina di riferimento è stata trasferita con un protocollo sicuro.

Un modo per aggirare il problema sarebbe usare uno script di reindirizzamento interno che invece di dirigere il collegamento al visitatore sull'HTTPS reindirizzi a HTTP e quindi reindirizza.

Per esempio:

<a href="http://www.yours.com/out.php?www.other.com">www.outboundsite.com</a> ma questo non userebbe il referrer originale.

Un'altra possibilità è usare trackback piuttosto che referrer e per quanto ne so questo funziona in HTTPS.


I miei test hanno indicato che l'utilizzo di un reindirizzamento non funziona (vedi aggiornamento).
schiaccianoci,

Usa trackback o perdi l'HTTPS;)
Simon Hayter

1
@bybe, questa risposta necessita di una modifica. Vedi serverfault.com/a/520603/87017 e webmasters.stackexchange.com/a/71331/7654
Pacerier

4

Sono stato in grado di impostare un collegamento da una pagina HTTPS a una pagina HTTP su un altro dominio e ancora passare l'URL della prima pagina come referrer utilizzando la seguente tecnica.

definizioni

Pagina di origine : pagina HTTPS in cui si trova il collegamento alla pagina di destinazione ospitata HTTP. In questo esempio:https://example1.com/origin.html

Pagina di destinazione : pagina HTTP che ha accesso al referrer della pagina di origine. In questo esempio:http://example2.com/destination.html

Piano di base

Ciò ha l'effetto di far sì che il reindirizzamento provenga dalla versione HTTP della pagina di origine:

  1. Il collegamento alla pagina di origine HTTPS si collega alla pagina corrente ma aggiunge un parametro di query per la pagina di destinazione [1]. per esempio:https://example1.com/origin.html?goto=http://example2.com/destination.html

  2. Quando si fa clic sul collegamento, il server su example1.com interrompe la richiesta standard quando è presente il parametro di query 'goto'. Allora:

    • Memorizza il parametro 'goto' in un cookie 'goto'.
    • Rimuove il parametro 'goto' e il valore dall'URL della richiesta corrente
    • 302 reindirizza a questo nuovo URL pulito sulla versione HTTP del dominio di origine, ad es. http://example1.com/origin.html
  3. Il server verifica ogni richiesta di un cookie "goto" e, se presente, cancella il cookie e quindi rende una pagina di reindirizzamento molto semplice. Questa pagina contiene [2]:

    • Uno script Javascript window.location.replace () che reindirizza all'URL del cookie goto.
    • Un tag Meta Refresh con il valore dell'URL del cookie goto e un ritardo di alcuni secondi.
    • Un link all'URL del cookie goto.

Appunti

[1] Questa soluzione di base è un redirector aperto e si dovrebbe prendere in considerazione la protezione contro i cattivi usando il parametro goto query per reindirizzare gli UA negli attacchi di phishing.

[2] Non tutti i browser invieranno il referrer durante il reindirizzamento tramite un reindirizzamento JS o un tag meta refresh. Nel mio test IE8 e inferiori non passa il referrer.

Non sono sicuro che questa tecnica consentirà ai crawler dei motori di ricerca di seguire i link. Questo non è importante per le mie esigenze.

Se UA ha i cookie disabilitati, questo reindirizzerà di nuovo alla pagina di origine.

Consentire connessioni HTTP solo per reindirizzamenti

Sul mio server ho una regola Apache per imporre HTTPS indipendentemente dalla richiesta:

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

Affinché la tecnica di reindirizzamento sopra funzioni, ho bisogno di un modo per consentire condizionalmente le connessioni HTTP. Ci sono molti modi per farlo. Ho deciso che un cookie funzionerà.

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

Il cookie disable_ssl verrebbe impostato nel passaggio 2 e quindi eliminato nel passaggio 3.


Ok .... ma questo non passa esattamente " intestazione referrer ".
Pacerier,


0

Sembra che ciò che desideri non sia possibile, quindi una possibile soluzione alternativa; se il sito di destinazione utilizza Google Analytics (o un programma compatibile credo che Piwik utilizzi una sintassi simile e altri pacchetti di statistiche sarebbero stupidi per ignorarlo) puoi inviare i parametri di monitoraggio, ad esempio nel tuo link a example.com

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

questo apparirà nella loro GA con i dettagli, assicurati di scegliere i valori che è improbabile che qualcun altro userà in modo da non forzarli in conflitti / o nascondere il tuo traffico dietro qualcun altro

Google fai un utile generatore di URL qui http://support.google.com/analytics/answer/1033867?hl=it

Aggiornamento - ri: etichetta

Senza sapere di più sulla natura del traffico, posso solo parlare in generale / personalmente ...

l'etichetta sarà sempre negli occhi di chi guarda. Senza questo, penso che in GA almeno verrebbe probabilmente mostrato come diretto, o forse (nessuna serie) che distorcerebbe le loro figure per far sembrare che il loro marchio fosse più grande di quello che è. Personalmente preferirei una campagna scelta con cura, quindi so da dove proviene il traffico.

Potresti anche guardarlo come, se difficilmente invii loro del traffico, probabilmente non se ne accorgeranno, se li invii molto, probabilmente non si lamenteranno! Se lo fanno, allora di solito puoi trovare qualcun altro a cui dare traffico gratuito!

e se sei molto specifico, non dovrebbe causare problemi; campagna come nome del tuo sito e fonte forse come la sezione del tuo sito?

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

Buona idea! Avevo pensato a questa soluzione alternativa, ma mi chiedevo se esistessero alcune "regole" per implementare questo dalla mia parte. Normalmente questi parametri di query vengono aggiunti dal sito Web di terze parti in modo che possano tracciare le loro campagne ecc. Questo approccio sarebbe considerato una cattiva pratica in qualche modo?
schiaccianoci,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.