ASPcenter.net

8 marzo 2010

Filtrare le URL con Server.URLEncode

Archiviato in: Utility Varie — Tag:, — lukeonweb @ 09:55

Scrivo questo articolo come integrazione dell’articolo Includere un sito esterno in un frameset con ASP per risolvere il problema della presenza della e-commerciale (&) nel link esterno in oggetto.

Il problema a cui alludo è il seguente:

go.asp?url=http://www.sito.it/pag.asp

Nessun problema: si finisce su pag.asp del sito esterno.

go.asp?url=http://www.sito.it/pag.asp?a=1

Nessun problema: si finisce su pag.asp del sito esterno coln una querystring valorizzata.

go.asp?url=http://www.sito.it/pag.asp?a=1&b=1

Ecco il problema!

La e-commerciale (&) fa parte della querystring del sito esterno, ma il browser (stupido) la interpreta come facente parte del file go.asp (interno) come secondo parametro dopo la specifica della URL di destinazione del sito interno.

La soluzione è semplice: filtrare il link, dalla posizione di partenza e non attraverso il redirect, con la il metodo Server.URLEncode come nell’esempio che segue:

go.asp?url=<%=Server.URLEncode("http://www.sito.it/pag.asp?a=1&b=1")%>

Il risultato, apparentemente indecifrabile, è il seguente:

go.asp?url=http%3A%2F%2Fwww%2Esito%2Eext%2Fpag%2Easp%3Fa%3D1%26b%3D1

ma il browser lo interpreterà correttamente e rimanderà il visitatore alla pagina di destinazione con tutte le querystring correttamente valorizzate!

Nessun commento »

Non c'è ancora nessun commento.

RSS feed dei commenti a questo articolo. TrackBack URL

Lascia un commento

ASPcenter.net è il blog italiano su ASP, ASP.Net, VB.Net, C# e Visual Studio - Funziona con WordPress