So prüfst Du mit PHP, ob Webseite im iFrame aufgerufen wird

Was ist PHP

Javascript und PHP sind ja bekanntlich wie „Eisbär & Pinguin“. Der Eine lebt am Nordpol, der Andere schippert irgendwo am Südpol herum und deshalb kommen die sich nie in die Quere.

Manchmal möchte ich aber wissen, OB eine Webseite in einem iFrame aufgerufen wurde oder ob NICHT. Wird der Inhalt über ein iFrame geladen werden, soll WordPress dem Inhalt KEINE Sidebar und KEINEN Footer spendieren.

Klar, Javascript erkennt das alles wunderbar. Aber Javascript wird leider erst im Browser des Besuchers ausgeführt – wenn die fertige Website inkl. Sidebar und Footer schon eingetrudelt ist.

Ich durchsuche das Netz nach Lösungen per AJAX, JQuery und PHP. Doch wochenlang vergebliche Mühe. Ich gab das Projekt, das Vorhaben schon auf – bis es wieder aktuell wurde.

Der PHP-Code

if( isset($_SERVER['HTTP_SEC_FETCH_DEST']) && $_SERVER['HTTP_SEC_FETCH_DEST'] == 'iframe' ) echo "<hr>iFrame<hr>";

$_SERVER[‚HTTP_SEC_FETCH_DEST‘] gibt den Initiator der ursprünglichen Abrufanforderung. Auf diese Weise können Server bestimmen, ob eine Anforderung bedient werden soll, je nachdem, ob sie für die erwartete Verwendung geeignet ist.

Diese Browser unterstützen die neue HTTP-HEADER Funktion

Dummerweise ist die vorgestellte Funktion so „neu“, dass nur neue Browser sie unterstützen.

  • Firefox ab 90 (Juli 2021)
  • Chrome ab 80
  • Edge ab 80
  • Opera ab 67
  • IE nein
  • Safari nein

Allerdings haben die Leute eher stets neue Browser-Versionen installiert, als dass sie ihr Betriebssystem regelmäßig updaten. Wer einen alten Windows 7 Rechner benutzt, hat nicht zwangsläufig einen „alten“ Browser, denn die Browser updaten sich (meisten) selbstständig und das regelmäßig.

Folgende Statistik ist von stetic.com.

Laut dieser Statistik hat praktisch kein PC einen veralteten Browser in Benutzung. Abgesehen von Browser, die sich mal wieder gegen den Fortschritt entscheiden und sich kategorisch verweigern.

Noch einmal zum Verständnis: Diese Funktion prüft nicht, ob der Inhalt eines iFrame vollständig geladen wurde, sie checkt, ob die aufgerufene Website in einem iFrame aufgerufen wurde – oder nicht.

Leider funktioniert die Abrage nur bei Webseiten mit SSL Zertifikat (HTTPS://). Bei Urls mit „http://meine-domain.de“ greift diese Prüfung nicht!