2013-01-04 3 views
5

Eventuali duplicati:
How to manually set REFERER header in Javascript?Cambiando il valore di referrer

Come modificare il valore di document.referrer?

Ho provato questo

<body> 
<center><a href="test.php" target="_self">self</a></center> 
<script type="text/javascript"> 
    alert(document.referrer); 
    document.referrer="test"; 
    alert(document.referrer); 
</script> 
</body> 

E non funziona, tutte le idee?

+2

Cosa stai cercando di realizzare? – SLaks

+1

Sembra simile a http://stackoverflow.com/questions/9580575/how-to-manually-set-referer-header-in-javascript – Roonaan

+1

no, non è possibile, a causa di impedire lo spoofing dei referrer http://stackoverflow.com/questions/1267550/changing-the-http-referer-in-javascript – SeanLi

risposta

8

Non è possibile modificare il referrer direttamente, ma è possibile utilizzare history.pushState()/history.replaceState() di spingere un nuovo URL nella cronologia del browser (a condizione che l'URL che desideri inviare abbia lo stesso dominio), quindi quando navighi, il nuovo URL sarà il referrer.

Si prega di notare che la manipolazione della storia utilizzando pushState aggiunge una nuova voce la storia, ma la pagina visualizzata rimane lo stesso, e l'utente dovrà premere due volte il tasto "Back" del browser per tornare indietro di un attuale pagina.

Tuttavia, se si utilizza replaceState, tornando dalla pagina in cui si desidera nascondere il referrer verrà inserito nell'URL appena impostato, quindi assicurarsi che qualsiasi cosa lo si sostituisca reindirizzando in qualche modo l'utente alla pagina originale di inviarli a una pagina 404 o completamente diversa.

+1

Nota che la funzione 'pushState' è limitata allo stesso dominio politica. Cambiare il dominio non è permesso. –

+0

sei un eroe. Grazie –