Navigering i PHP-webbproxy: relativa URL:er, kakor och ursprung
Planera resurs-URL:er, navigering, kakor och ursprungsgränser när du gör PHP-hämtning till en webbläsarinriktad webbproxy.
Innan du lägger till mer omskrivning i en PHP-hämtare, välj vart nästa resurs ska gå. Ett dokument som hämtats från https://destination.example/catalog/ och returnerats på https://viewer.example/browse?url=... kan innehålla:
<img src="photo.jpg">
<a href="details/42">Details</a>Webbläsaren löser dessa referenser med dokumentet den fick i visaren. Att PHP hämtade de ursprungliga byten fastställer inte den externa basen.
Ett base-element kan peka relativa URL:er mot målet, men dessa förfrågningar kan sedan gå direkt från webbläsaren till målet. För att i stället hålla varje förfrågan genom PHP krävs proxy-URL:er och en bredare routingmodell:
| Resurs eller åtgärd | Nödvändig hantering |
|---|---|
| Länkar och bilder | Lös dem mot det externa dokumentet och producera den avsedda vägen |
| CSS-importer och -resurser | Använd stilmallens externa bas |
| Formulär | Bevara metod och skickade data |
| Omdirigeringar | Håll navigeringen inom den tillåtna modellen |
| Förfrågningar som skapas av skript | Hantera URL:er som saknas i den ursprungliga HTML:en |
Några reguljära uttrycks-ersättningar kan inte lova allmän kompatibilitet med skriptunga webbplatser. För ett känt offentligt dokument kan det räcka att stänga av navigering, tillåta direkta länkar eller dirigera en stödd delmängd tillbaka genom visaren. Bevara faktiska medietyper i stället för att behandla varje svar som HTML.
Att returnera opålitlig markup från din domän ger den också visarens webbläsarursprung, inte identiteten hos webbplatsen som hämtades. Isolera dessa dokument från konto- och administratörssidor. Definiera externa kakor per besökare, tillåtna vidarebefordrade rubriker och omdirigeringsmål; en delad kakburk kan blanda externa inloggningar.
Bind dig till den stödtgränsen innan du erbjuder en webbläsarsession. För vanligt surfande genom en annan utgång bevarar webbläsarens eget proxygränssnitt, som Firefox HTTP/SOCKS-inställningar, webbläsarens mål-URL och ursprungsmodell utan att kräva detta hämta-och-återpublicera-lager. För ett separat offentligt webbplatstest levererar listan över gratisproxys kandidatslutpunkter; matcha protokollet i webbläsarinställningarna.