WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Sätta Referer-header? (https://www.wn.se/forum/showthread.php?t=14964)

dlinder 2006-07-05 18:54

Har försökt sätta Referer-headern när jag redirectar trafik. Provade detta:

<?php
header("Referer: http://www.set-adress.com");
header("Location: http://www.new-location.com");
?>

Redirecten fungerar ju, men Referer-headern är tom fortfarande. Någon som har ett förslag på alternativt sätt? Har sett lösningar med CURL, men det stöds in hos Loopia.

kullervo 2006-07-05 19:03

Servern kan inte sätta referer-headern.

dlinder 2006-07-05 19:58

Aha, det låter ju iofs logiskt eftersom det sköts av browsern...

Men här presenteras ju ett sätt iaf:

http://www.mustap.com/phpzone_post_6...the-referer-se

Dock i sammanhanget POST vilket ju inte är aktuellt här. Går det att "översätta" till vanligt sidanrop?


EDIT: Äsch, länken vill inte bli länk trots att jag använder länkknappen... får bli cut&paste.

kullervo 2006-07-05 22:36

Kollade aldrig på länken men här är relevant avsnitt RFC:n för HTTP:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html Kolla på rubrik "14.36 Referer"

jonny 2006-07-06 01:30

Att den är tom brukar bero på någon form av brandvägg eller liknande som "skyddar" den informationen.

Blackex 2006-07-06 08:32

Om du redirectar så följer den ursprungliga referen med, om det finns något.

Genom att sätta en META refresh, så förloras den ursprungliga referen. Men du kan inte sätta vilken referer som du vill. Referern kommer då istället att bli den sida som gör refresh.

Du kan också göra en JavaScript redirect. En del browsers (kommer inte ihåg vilka på rak arm) skickar då med en blank referer.

dlinder 2006-07-06 12:18

Citat:

Originally posted by Blackex@Jul 6 2006, 08:32
Genom att sätta en META refresh, så förloras den ursprungliga referen. Men du kan inte sätta vilken referer som du vill. Referern kommer då istället att bli den sida som gör refresh.
Är det så alltså? Provade faktiskt det, men fick det inte att fungera. Får göra ett nytt försök!

dlinder 2006-07-06 12:22

Citat:

Originally posted by kullervo@Jul 5 2006, 22:36
Kollade aldrig på länken men här är relevant avsnitt RFC:n för HTTP:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html Kolla på rubrik "14.36 Referer"

Jo du har ju rätt. Men likväl går det ju uppenbarligen att komma runt, t ex med cURL.

WizKid 2006-07-06 14:23

Citat:

Ursprungligen postat av dlinder
Citat:

Ursprungligen postat av kullervo
Kollade aldrig på länken men här är relevant avsnitt RFC:n för HTTP:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html Kolla på rubrik "14.36 Referer"

Jo du har ju rätt. Men likväl går det ju uppenbarligen att komma runt, t ex med cURL.

Men cURL och att skicka besökaren vidare är det stor skillnad på. När servern hämtar ner en sidan via cURL eller tex fopen så kan du självklart sätta Referer. Däremot om du ska skicka vidare en besökare med header() eller liknande så kan du inte sätta Referer. Detta eftersom det är webbläsaren som sätter Referer-headern och den tillåter inte att servern ändrar på den.

Blackex 2006-07-06 14:34

Ett tips till dlinder, för att kolla vilka headers som sätts, är att göra en sida som endast innehåller

Kod:

<?php phpinfo() ?>
Gör dina redirects till den sidan. Där kan du läsa av alla headers som skickas (plus en massa annat).

dlinder 2006-07-06 14:43

Citat:

Originally posted by WizKid@Jul 6 2006, 14:23
Men cURL och att skicka besökaren vidare är det stor skillnad på. När servern hämtar ner en sidan via cURL eller tex fopen så kan du självklart sätta Referer. Däremot om du ska skicka vidare en besökare med header() eller liknande så kan du inte sätta Referer. Detta eftersom det är webbläsaren som sätter Referer-headern och den tillåter inte att servern ändrar på den.
Aha, tack för förklaringen! Är inte alls insatt i cURL.

dlinder 2006-07-06 14:59

Citat:

Originally posted by Blackex@Jul 6 2006, 14:34
Ett tips till dlinder, för att kolla vilka headers som sätts, är att göra en sida som endast innehåller

Kod:

<?php phpinfo() ?>
Gör dina redirects till den sidan. Där kan du läsa av alla headers som skickas (plus en massa annat).

Utmärkt funktion, tack! Innan använde jag ett rätt rörigt asp-script som jag fått från en kompis.

Dock får jag det inte att funka med meta refresh. Kör följande php-kod:

<?php

echo '<meta http-equiv="Refresh" content="0;URL=http://www.domän.com/phpinfo.php">'

?>

Phpinfo har i det läget inte ens HTTP_REFERER med som värde, dvs inte ens en ruta med "no value". Skapar jag istället en vanlig länk som länkar till phpinfo-scriptet fungerar det bra.

Vad gör jag för fel?

Tack för all hjälp.

Blackex 2006-07-06 15:11

Hej igen!

Jag hade fel. En meta refresh skickar inte med någon referer alls. Den blir blank. Sorry!

Jag tittade in en på en sida som jag vet använder sig av redirect för att gömma referern. Så här bär de sig åt. Själva redirecten fungerar. Men jag visste inte att man kan göra på det här sättet. Och jag tror faktiskt inte att själva referer biten fungerar (det borde inte fungera). Men du kan prova och se vad du får för resultat:

Kod:

<?php
header("Referer: http://www.valfri-referer.com");
header("Refresh: 0; url=http://www.new-location.com");
?>


eg0master 2006-07-06 16:02

Om du hemskt gärna vill ha refernern så kan du ju skapa en egen header.
En browser som följer standarden skall så vitt jag minns skicka tillbaka alla okända headrar den får från servern tillbaka till servern vid nästa request. Kräver dock att du kör på samma server iofs...

Så i princip borde det vara möjligt att göra:
Kod:

header('MyReferer: ' . <the referer>);
header('Location: some other place');

och sedan på destinationen kolla om MyReferer finns innan du kollar Referer.

dlinder 2006-07-06 19:12

Blackex:

Som du misstänkte fungerade Referer-biten tyvärr inte.

Det sjuka i allt det här är att jag enligt min logg har lyckats uppdatera om Referer-headern på en redirectsida EN gång, men kan inte för mitt liv komma på hur jag gjorde...

eg0master:

Ingen dum idé alls! Dessvärre kommer detta utnyttjas även utanför min sajt varför en standardiserad Referer-header i princip är nödvändig.

eg0master 2006-07-06 21:27

Citat:

Originally posted by dlinder@Jul 6 2006, 19:12
Ingen dum idé alls! Dessvärre kommer detta utnyttjas även utanför min sajt varför en standardiserad Referer-header i princip är nödvändig.
Fast om någon tar sig tid att göra ett script som använder sig av din specilheader kan de väl lika gärna fixa ett script för att fejka den riktiga referer-headern. Den senare är ju mycker mer troligt egentligen.

Men vad är det du vill skydda egentligen.


Alla tider är GMT +2. Klockan är nu 17:38.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson