PHP-webproxy-navigation: relative URL'er, cookies og origins
Planlæg ressource-URL'er, navigation, cookies og origin-grænser, når du gør PHP-hentning til en webproxy, der vender mod browseren.
Før du tilføjer mere omskrivning til en PHP-henter, skal du vælge, hvor den næste ressource skal hen. Et dokument hentet fra https://destination.example/catalog/ og returneret på https://viewer.example/browse?url=... kan indeholde:
<img src="photo.jpg">
<a href="details/42">Details</a>Browseren opløser disse referencer ved hjælp af det dokument, den modtog i vieweren. At PHP har hentet de oprindelige bytes, etablerer ikke den eksterne base.
Et base-element kan pege relative URL'er mod destinationen, men de anmodninger kan derefter gå direkte fra browseren til destinationen. For i stedet at holde hver anmodning gennem PHP kræves proxy-URL'er og en bredere routingmodel:
| Ressource eller handling | Påkrævet håndtering |
|---|---|
| Links og billeder | Opløs dem mod det eksterne dokument, og producér den tilsigtede rute |
| CSS-imports og ressourcer | Brug stylesheetets eksterne base |
| Formularer | Bevar metode og indsendte data |
| Omdirigeringer | Hold navigationen inden for den tilladte model |
| Anmodninger oprettet af scripts | Håndtér URL'er, der ikke findes i den oprindelige HTML |
Et par regulære udtryks-erstatninger kan ikke love generel kompatibilitet med scripttunge websteder. For et kendt offentligt dokument kan det være nok at deaktivere navigation, tillade direkte links eller rute en understøttet delmængde tilbage gennem vieweren. Bevar faktiske medietyper i stedet for at behandle hvert svar som HTML.
At returnere utroværdigt markup fra dit domæne giver det også viewerens browserorigin, ikke det hentede websteds identitet. Isolér disse dokumenter fra konto- og administratorsider. Definer eksterne cookies pr. besøgende, tilladte videresendte headers og omdirigeringsdestinationer; en delt cookiekrukke kan blande eksterne logins.
Forpligt dig til den støttegrænse, før du tilbyder en browsersession. Til almindelig browsing gennem en anden udgang bevarer browserens egen proxygrænseflade, såsom Firefox' HTTP/SOCKS-indstillinger, browserens destinations-URL og origin-model uden at kræve dette hent-og-genudgiv-lag. Til en separat offentlig webstedstest leverer listen over gratis proxyer kandidatendepunkter; match protokollen i browserindstillingerne.