2009-05-25 11 views
2

Ich habe Referrer zuvor in foo.php verwendet, um zu entscheiden, ob die Seite iframing foo.php von einer bestimmten URL ist. (mit $_SERVER['HTTP_REFERER'])In welcher Situation funktioniert der HTTP_REFERER nicht?

Es stellte sich heraus, dass es die meiste Zeit funktionierte (etwa 98% der Zeit), aber es schien auch wie einige Benutzer die Seite angekommen und $_SERVER['HTTP_REFERER'] wurde nicht in foo.php eingestellt und daher brach der Code. [update: Diese Benutzer behaupteten, dass sie dem üblichen Seitenfluss folgten und nicht die URL von foo.php alleine im Browser benutzten (dass sie ein Iframe sein würde) und die Benutzer ihre Browsereinstellungen nie änderten. ]

Ich frage mich, was die Gründe dafür sind, dass es passieren könnte?

Antwort

1

Nicht standardmäßig AFAIK, aber es ist einfach, es auszuschalten (für die Privatsphäre), z. in Firefox über about: config, und sicherlich einige Benutzer könnten Browser verwenden, die an sie (z. B. von ihrer IT-Abteilung) mit solchen Arten von Einstellung verteilt werden. Sie sollten also versuchen, REFERER für wichtige Funktionen zu meiden (auch weil es falsch geschrieben ist ;-).

6

Die HTTP/1.1 RFC macht es nicht zwingend erforderlich, einen HTTP-Referer-Header zu senden. Sie können keine Annahmen über seine Anwesenheit machen, wenn Sie robusten Code schreiben; perfekt konforme Browser enthalten es möglicherweise nicht.

Moreoever, rät die RFC dass „Das Referer Feld darf nicht, wenn der Request-URI von einer Quelle erhalten wurde, gesendet werden, der seine eigene URI nicht, wie eine Eingabe vom Benutzer Tastatur“ und " Wir schlagen vor, obwohl es nicht erforderlich ist, dass eine bequeme Umschaltschnittstelle bereitgestellt wird, damit der Benutzer das Senden von Absender- und Referenzinformationen "" aktivieren oder deaktivieren kann.

Der letztere ist nicht sehr häufig (obwohl einige Browser einen "Private" Modus haben, der die Anforderungen erfüllt). Wahrscheinlicher für Ihre 2% ist, dass Leute die URL vorgemerkt haben, die die ersten Kriterien erfüllt (URI erhalten von einer Quelle ohne URI), und so sendet der Browser keinen Referer.

Verwandte Themen