PHP-webproxy-navigasjon: relative URL-er, informasjonskapsler og opphav
Planlegg ressurs-URL-er, navigasjon, informasjonskapsler og opphavsgrenser når du gjør PHP-henting til en webproxy for nettleseren.
Før du legger til mer omskriving i en PHP-henter, velg hvor den neste ressursen skal gå. Et dokument hentet fra https://destination.example/catalog/ og returnert på https://viewer.example/browse?url=... kan inneholde:
<img src="photo.jpg">
<a href="details/42">Details</a>Nettleseren løser disse referansene med dokumentet den fikk i viseren. At PHP hentet de opprinnelige bytene, etablerer ikke den eksterne basen.
Et base-element kan peke relative URL-er mot destinasjonen, men disse forespørslene kan deretter gå direkte fra nettleseren til destinasjonen. For å holde hver forespørsel gjennom PHP trengs i stedet proxy-URL-er og en bredere rutingsmodell:
| Ressurs eller handling | Nødvendig håndtering |
|---|---|
| Lenker og bilder | Løs dem mot det eksterne dokumentet og produser den tiltenkte ruten |
| CSS-import og -ressurser | Bruk stilarkets eksterne base |
| Skjemaer | Bevar metode og innsendte data |
| Omdirigeringer | Hold navigasjonen innenfor den tillatte modellen |
| Forespørsler laget av skript | Håndter URL-er som mangler i den opprinnelige HTML-en |
Noen få erstatninger med regulære uttrykk kan ikke love generell kompatibilitet med skripttunge nettsteder. For et kjent offentlig dokument kan det være nok å slå av navigasjon, tillate direkte lenker eller rute et støttet delsett tilbake gjennom viseren. Bevar faktiske medietyper i stedet for å behandle hver respons som HTML.
Å returnere upålitelig markup fra domenet ditt gir det også viserens nettleseropphav, ikke identiteten til nettstedet som ble hentet. Isoler disse dokumentene fra konto- og administrasjonssider. Definer eksterne informasjonskapsler per besøkende, tillatte videresendte headere og omdirigeringsmål; en delt kakekrukke kan blande eksterne innlogginger.
Forplikt deg til den støttegrensen før du tilbyr en nettleserøkt. For vanlig surfing gjennom en annen utgang bevarer nettleserens eget proxygrensesnitt, som Firefox' HTTP/SOCKS-innstillinger, nettleserens mål-URL og opphavsmodell uten å kreve dette hent-og-gjenutgi-laget. For en separat offentlig nettstedstest leverer listen over gratis proxyer kandidatendepunkter; match protokollen i nettleserinnstillingene.