Navigazione del proxy web in PHP: URL relativi, cookie e origini
Pianificate URL delle risorse, navigazione, cookie e confini di origine quando trasformate il recupero con PHP in un proxy web per il browser.
Prima di aggiungere altra riscrittura a un recuperatore PHP, scegliete dove deve andare la risorsa successiva. Un documento recuperato da https://destination.example/catalog/ e restituito su https://viewer.example/browse?url=... può contenere:
<img src="photo.jpg">
<a href="details/42">Details</a>Il browser risolve quei riferimenti con il documento ricevuto nel visualizzatore. Il fatto che PHP abbia recuperato i byte originali non stabilisce la base remota.
Un elemento base può indirizzare gli URL relativi verso la destinazione, ma quelle richieste possono poi andare direttamente dal browser alla destinazione. Per mantenere ogni richiesta attraverso PHP servono invece URL di proxy e un modello di instradamento più ampio:
| Risorsa o azione | Gestione necessaria |
|---|---|
| Link e immagini | Risolveteli rispetto al documento remoto e producete il percorso previsto |
| Import e risorse CSS | Usate la base remota del foglio di stile |
| Moduli | Preservate metodo e dati inviati |
| Reindirizzamenti | Mantenete la navigazione nel modello consentito |
| Richieste create da script | Gestite gli URL assenti dall'HTML originale |
Alcune sostituzioni con espressioni regolari non possono garantire una compatibilità generale con siti ricchi di script. Per un documento pubblico noto può bastare disattivare la navigazione, consentire link diretti o instradare un sottoinsieme supportato attraverso il visualizzatore. Preservate i tipi di media reali invece di trattare ogni risposta come HTML.
Restituire markup non attendibile dal vostro dominio gli attribuisce anche l'origine browser del visualizzatore, non l'identità del sito recuperato. Isolate quei documenti dalle pagine di account e amministrazione. Definite cookie remoti per visitatore, intestazioni inoltrate consentite e destinazioni di reindirizzamento; un barattolo di cookie condiviso può mescolare accessi remoti.
Impegnatevi su quel confine di supporto prima di offrire una sessione di navigazione. Per la navigazione ordinaria attraverso un'altra uscita, l'interfaccia proxy nativa del browser, come le impostazioni HTTP/SOCKS di Firefox, preserva l'URL di destinazione e il modello di origine del browser senza richiedere questo strato di recupero e ripubblicazione. Per un test separato di sito pubblico, la lista di proxy gratuiti fornisce endpoint candidati; abbinate il protocollo nelle impostazioni del browser.