Il referer dell’intestazione HTTP viene inviato quando si accede a una pagina http da una pagina https?

Dopo alcuni test, sto iniziando a raggiungere la conclusione che un browser non invia un’intestazione HTTP Referer quando si fa clic su una pagina http da una https.

Per quale motivo di sicurezza? È definito da qualche parte nello standard?

Gli stati RFC HTTP , nella sezione 15.1.3 Codifica delle informazioni sensibili negli URI :

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

Quindi, questo è il comportamento previsto / standard.

In realtà non è più così semplice (dal 2014 in poi), secondo questo documento w3c sulla politica dei referenti .

Il comportamento predefinito è che i browser non invieranno informazioni sui referrer quando passano da HTTPS a HTTP. Tuttavia, i browser invieranno il referrer quando si passa da HTTPS a HTTPS.

Inoltre, in HTML5, c’è un nuovo meta tag chiamato referrer, che assomiglia a questo:

  

Nuovi browser hanno già implementato questo . Quindi, se i browser invieranno o meno il referrer, dipenderà da questo meta tag nel prossimo futuro. Se questo meta tag non è incluso nell’HTML della pagina, i browser utilizzeranno il comportamento predefinito.

Di seguito sono riportati i possibili valori dell’attributo content del metatag del referrer:

  • no-referrer: Referrer non verrà inviato, indipendentemente da HTTP o HTTPS
  • origine: solo il dominio di origine (principale) verrà inviato come referente
  • origine-quando-crossorigin: la stessa origine invierà l’URL di referrer completo e l’origine incrociata invierà solo l’URL di origine come referente
  • no-referrer-when-downgrade: questo è il comportamento predefinito quando non viene fornito alcun meta tag referrer nella pagina.
  • URL non sicuro: invierà sempre il referrer, indipendentemente da HTTP o HTTPS

Inoltre, ci sono alcuni valori di attributo legacy per il meta tag del referrer. Questi non sono più consigliati, ma utilizzati in molti siti al momento:

  • mai: come no-referrer
  • default: come no-referrer-when-downgrade
  • sempre: stesso come URL non sicuro

Spero che queste informazioni saranno utili a qualcuno che ha appena trovato questo post dopo il 2014.

Sì, definito nello standard :

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

Motivo: a volte i SessionID sono codificati URL. Le pagine HTTP possono avere cross-site scripting che rubano la sessione dalla comunicazione HTTPS. Per evitare ciò, il referrer non viene trasmesso sulla transizione da HTTPS a HTTP in modo tale che l’ID sessin codificato URL non possa essere rubato.