Bevor Sie einem PHP-Abrufer weitere Umschreibungen hinzufügen, wählen Sie, wohin die nächste Ressource gehen soll. Ein Dokument, das von https://destination.example/catalog/ abgerufen und unter https://viewer.example/browse?url=... ausgeliefert wird, kann Folgendes enthalten:

<img src="photo.jpg">
<a href="details/42">Details</a>

Der Browser löst diese Referenzen anhand des Dokuments auf, das er beim Viewer erhalten hat. Dass PHP die Originalbytes abgerufen hat, begründet nicht die entfernte Basis.

Ein base-Element kann relative URLs auf das Ziel verweisen, doch diese Anfragen können dann direkt vom Browser zum Ziel gehen. Um stattdessen jede Anfrage durch PHP zu führen, braucht es Proxy-URLs und ein breiteres Routingmodell:

Ressource oder AktionErforderliche Behandlung
Links und BilderGegen das entfernte Dokument auflösen und die beabsichtigte Route erzeugen
CSS-Importe und -RessourcenDie entfernte Basis des Stylesheets verwenden
FormulareMethode und übermittelte Daten erhalten
WeiterleitungenNavigation im erlaubten Modell halten
Von Skripten erzeugte AnfragenURLs behandeln, die im ursprünglichen HTML fehlen

Ein paar Ersetzungen per regulärem Ausdruck können keine allgemeine Kompatibilität mit skriptlastigen Websites versprechen. Für ein bekanntes öffentliches Dokument kann es genügen, die Navigation zu deaktivieren, direkte Links zuzulassen oder eine unterstützte Teilmenge über den Viewer zu leiten. Bewahren Sie tatsächliche Medientypen, statt jede Antwort als HTML zu behandeln.

Ungeprüftes Markup unter Ihrer Domain auszuliefern gibt ihm außerdem den Browser-Origin des Viewers, nicht die Identität der abgerufenen Website. Isolieren Sie solche Dokumente von Konto- und Admin-Seiten. Legen Sie entfernte Cookies pro Besucher, erlaubte weitergeleitete Header und Weiterleitungsziele fest; ein gemeinsames Cookie-Glas kann entfernte Anmeldungen vermischen.

Legen Sie sich auf diese Unterstützungsgrenze fest, bevor Sie eine Browsersitzung anbieten. Für gewöhnliches Browsen über einen anderen Ausgang bewahrt die native Proxy-Schnittstelle des Browsers, etwa Firefox' HTTP/SOCKS-Einstellungen, die Ziel-URL und das Origin-Modell des Browsers, ohne diese Abruf-und-Neuveröffentlichungsschicht zu benötigen. Für einen separaten Test einer öffentlichen Website liefert die Liste kostenloser Proxys Kandidaten-Endpunkte; gleichen Sie das Protokoll in den Browsereinstellungen ab.

Ähnliche Artikel