Lad os indrømme, at jeg af sikkerheds- / privatlivsårsager globalt vil sætte min henvisningspolitik til at være 'no-referrer'.

For eksempel ved hjælp af Apache's .htaccess's

Header always set Referrer-Policy no-referrer 

IIS ' web.config's

        

osv. osv. Med andre ord ønsker jeg, at denne politik håndhæves globalt for hver enkelt webside.

For et bestemt domæne (f.eks https://validator.w3.org/), Vil jeg sende henviseren (for eksempel for at bruge det praktiske url https://validator.w3.org/check?uri=referer).

Jeg kunne bruge det eksperimentelle referrerpolicy attribut af links, men jeg ved ikke, hvor godt den attribut understøttes. Jeg ved heller ikke, om en sådan attribut kan tilsidesætte indstillingen af ​​serveren.

Det link type 'norefferer' attribut synes at være godt understøttet, men jeg ønsker at opnå det modsatte!

Hvordan kunne jeg globalt ikke tillade, at henviseren sendes, undtagen links, der peger på et bestemt domæne?

  • Hvis du simpelthen ønskede at videregive henvisningsinfo for et bestemt eksternt link, kan det gøres via omdirigering til en mellemliggende side tvunget til http i htaccess. og ændre henvisningspolitikken på mellemsiden via et metatag og tilføje en omdirigering via en meta-opdatering. Jeg er sikker på, at der er mere elegante måder at opnå det på, men det virker. Men når det er sagt, fungerer det ikke for validator.w3.org/check?uri=referer
  • Så dybest set vil du kun videresende henvisningsdata til et websted - men blokere dit domæne fra at blive vist som en henvisningskilde for alle andre? Ikke sikker på, at jeg helt forstår din underliggende hensigt, eller hvad dette gør for dig, men du finder muligvis dit svar her: developers.google.com/analytics/devguides/collection/…
  • @BronwynV Tak for din kommentar.Jeg er ikke sikker på, at jeg forstår de tekniske detaljer i dit forslag, men hvis det ikke virker for validator.w3.org/check?uri=referer, er det faktisk ikke til nogen nytte for mig.
  • @JoshSalganik Ja, det har du ret: Jeg ønsker, at henviseren kun transmitteres, når du får adgang til et bestemt websted / domæne. Mine underliggende intentioner er i det væsentlige at bruge validator.w3.org/check?uri=referer: Klik på linket, hvis henviseren blev transmitteret, ville vi være landet på validator.w3.org/nu/… Dette sparer byrden ved at give det nøjagtige link til hver side. Jeg kan ikke se, hvordan mit problem er relateret til Google Analytics.
  • 1 Hvis det primære mål i dette tilfælde er at teste URL'en ved W3C-validatoren, kan du videregive den URL, der skal testes direkte i URL-parameteren. f.eks. https://validator.w3.org/check?uri=http://www.example.com/path/to/foo.
+50

Metode 2

Efter konceptet med metode 1 (nedenfor) indså jeg, at dette sandsynligvis kunne gøres med kun en teknologi og uden at genindlæse den aktuelle side. Det hele er gjort på klientsiden med almindeligt javascript.

<!DOCTYPE html> <head> </head> <body> Link that you do want to allow referrer to be passed to Link that you don't want referrer to be passed to <script> document.getElementById('allowReferrer').addEventListener('click', function(e){ e.preventDefault(); var metaRef = document.createElement('meta'); metaRef.setAttribute('name', 'referrer'); metaRef.setAttribute('content', 'origin'); document.head.appendChild(metaRef); window.location.href=this.href; }); </script> </body> </html> 

(Denne kode kan helt sikkert forbedres - det er bare et bevis på konceptet.)

Hovedsageligt er der en begivenhedslytter på allowReferrer ID, som, når det udløses, forhindrer linket, der skal følges, tilføjer henvisnings = oprindeligt metatag til hovedet og følger derefter linket. Meget pænere end metode 1.

Metode 1

Jeg har lige testet en ret indviklet løsning, men den er den eneste løsning, jeg kan tænke på, og det fungerede.

<!DOCTYPE html> <head> <?php if ($_GET['referrer'] == 'true') { echo '<meta name='referrer' content='origin'>'; echo '<script>window.location.href = ''.$_GET['location'].'';</script>'; } else { echo '<meta name='referrer' content='no-referrer'>'; }  <body> Link, som du ønsker at tillade henvisning til at blive sendt til Link, som du ikke ønsker, at henvisere skal sendes til </body>   ?> var13 ->

(Denne kode kan helt sikkert forbedres - det er bare et bevis på konceptet.)

Når siden indlæses, ser den efter en forespørgselsparameter kaldet 'refferer', hvis den ikke er indstillet til "true", er henvisnings-metatagget sat til "no-refferer", men hvis det er indstillet til "true", henvises henvisningen metatag er indstillet til 'oprindelse', og javascript udføres for at omdirigere dig til et sted, der holdes i den anden forespørgselsparameter kaldet 'placering'.

Alle links følges normalt uden at give nogen henvisningsinformation. Hvis du vil have et link, der henviser til, at henviseren skal passeres, opretter du dit link som

[current URL]?referrer=true&location=[link which should be url encoded]

for eksempel

http://example.com/test/some-page.php?referrer=true&location=https%3A%2F%2Fvalidator.w3.org

Det er bestemt ikke smukt, men indtil der er god understøttelse af attributten referrerpolicy på ankermærkerne, er det muligvis den eneste måde. Før jeg bruger denne løsning, vil jeg opfordre dig til at spørge dig selv, hvor vigtigt det er, at du har denne funktionalitet, og er det det værd?

  • 1 Wow, tak. Det er bestemt indviklet og involverer to teknologier (php og JavaScript), hvorimod jeg bestemt tænkte, at en "ren" html (med nogle justeringer i Apache / Nginx / Windows Server, til sidst) ville eksistere. Det er bestemt genialt, men jeg ville ikke have tænkt på det.
  • Thans @ Clément - måske er der en lettere måde, men på dette tidspunkt er dette den eneste løsning, jeg kan tænke på. Jeg vil fortsætte med at tænke over det og vende tilbage til dig, hvis jeg finder på noget andet.
  • @ Clément Jeg har tilføjet en anden metode, som måske er mere ønskelig. Jeg bruger netværkspanelet i Chrome dev-værktøjer til at identificere, hvilken header der sendes, og det ser også ud til at fungere.
  • 1 Tak igen for at dele din idé, Josh. Jeg markerer ikke dit svar som accepteret, fordi jeg håber, at der findes en pænere løsning, men du fortjener den fordel.
  • 1 Jeg ville tro det, men tænkte at jeg ville give webmasters.stackexchange.com en chance! Jeg synes, dette spørgsmål passer mere til regningen her og ikke krydser posten, men du er velkommen til at gøre det, hvis du vil. Hold mig informeret ;-) Jeg ændrede mit spørgsmål lidt og gjorde det mere orienteret mod at tilsidesætte serverkonf., Så du kunne endda stille dit spørgsmål uden at være en duplikat af den ene.

Du kan prøve på denne måde, selvom jeg ikke er sikker på, om det understøttes bredt

 link 
  • 4 Der er ikke sådan noget som en "dofollow" -værdi for rel-attributten
  • Så ... Værdien dofollow eksisterer ikke, og desuden fungerer løsningen simpelthen ikke, så jeg synes ikke, det er et virkelig nyttigt bidrag. Men tak alligevel.

arbejdet for dig: Charles Robertson | Ønsker du at kontakte os?