- Home
- Categorie
- Coding e Sistemistica
- Javascript & Framework
- Browser, collegamenti JavaScript e HTTP referer
-
Browser, collegamenti JavaScript e HTTP referer
Non ho trovato nulla in proposito in rete, perciò provo qui:
Qualcun altro ha notato una difformità di comportamento da parte dei vari browser nel passare o meno l'HTTP referer quando si clicca su un collegamento JavaScript?
Provate questo:
<html> <head> <title>Referer test</title> <script> function popURL(destURL) { newWin=window.open('about:blank',''); with (newWin.document){ writeln('<html><head><META HTTP-EQUIV="REFRESH" CONTENT="1; URL='+destURL+'"></head><body></body></html>'); close(); } } </script> </head> <body> <h1>Referer test</h1> * [url="http://www.ioerror.us/ip/headers"]Link normale * [url="javascript:;"]Pop-up JavaScript (<tt>window.open()</tt>) * [url="javascript:;"]Pop-up JavaScript (<tt>popURL()</tt>) </body> </html>
Salvatelo da qualche parte sul Web (non sul vostro desktop), e provate a cliccare i link con vari browser per vedere quali passano il referer e quali no.
Io ottengo questi risultati:
- IE 6.0: link tipo 1 sì, link tipo 2 no, link tipo 3 no;
- Firefox 1.5.0.1: link tipo 1 sì, link tipo 2 sì, link tipo 3 no;
- Opera 8.52: link tipo 1 sì, link tipo 2 sì, link tipo 3 sì (!!!).
Qualcuno è in grado di scrivere una funzione JS per bloccare il passaggio del referer che funzioni con qualsiasi browser?
-
Davvero un bel problema... non ci avevo mai fatto caso più di tanto.
Ho osservato il comportamento di Opera e per il momento non mi è venuto nulla in mente....
Se non di usare un altro sito come filtro.
Cioè ipotizziamo 3 siti: A e B tuoi, C il sito da linkare.
Tu vuoi evitare referer del sito A sul sito C, allora linki dal sito A il sito B passando come parametro l'url del sito C.
Sul sito B metti uno script (che dovrà avere particolari caratteristiche, passare un semplice 301 non basta) che si occupi di fare un redirect al sito C.
Così C non saprà dell'esistenza di A, ma solo di B.Vediamo se ci viene qualcos'altro in mente
-
Cercavo qualcosa in JavaScript...