Ich möchte, dass die Ajax-Routine nur an bestimmte Webseiten antwortet. Zunächst dachte ich an den $_SERVER['REMOTE_HOST'], aber der wird nicht (immer) gesendet.
Ich habe dazu zwei Mechanismen im Einsatz (die gerne noch bewertet werden können):
- Ich vergleiche den HTTP_REFERER in _SERVER mit SERVER_NAME:
if(isset($_SERVER['HTTP_REFERER'])) $Referer = parse_url($_SERVER['HTTP_REFERER']);
else $Referer = array('host' => "");
// ignore actions when hosts differ
if(($Referer["host"] != $_SERVER['SERVER_NAME']) and (!empty($this->Action))){
}
wie man sehen kann musst Du das noch abwandeln. In $this->Action habe ich die URL GET Parameter, also wird die Abfrage nur ausgeführt, wenn GET-Parameter im Spiel sind, sonst würde der erste Request auch schon abgelehnt werden.
- Ich setze im Hauptscript eine Session Variable mit einer ID, übergebe diese per Get dem Ajax-Request, starte dort auch eine Session und vergleiche Wert aus SESSION mit Wert aus GET. Achtung: wenn das Script rechenintensiv ist, Session wieder beenden, sonst ist der Prozess nicht asynchron!!!
Wie kann ich erreichen, dass bestimmte Ressourcen nur an bestimmte Webseiten ausgeliefert werden?
... an bestimmte Klienten ausgeliefert werden ... !
Cheers,
Baba