2011-07-28 18 views
5

Ho la necessità di reindirizzare alla pagina corrente meno gli argomenti di query.Response.Redirect (Request.Url.AbsolutePath) Sempre "Sicuro"?

Ho appena trovato Request.Url.AbsolutePath, che sembra fornire solo il ticket da passare a Response.Redirect().

Sembra funzionare sulla mia macchina di sviluppo ok. Qualcuno sa di potenziali problemi di reindirizzamento al valore di questa proprietà? È difficile confermare che sia "sicuro" in tutti i casi.

risposta

2

Potrebbe essere un problema se si "ri-scritto" l'URL internamente. Ad esempio, la richiesta dell'utente "/team.aspx" ma internamente trasferisce l'esecuzione o riscrive l'url come "/page.aspx?id=137".

Personalmente, preferisco utilizzare Request.RawUrl (che è sempre locale) ed è possibile rimuovere la stringa di query.

Eliminare la parte host di una richiesta non è un problema perché HTTP Redirect può essere percorso su Absolute Path ("/ foo/bar") e il browser conserva il protocollo, la porta e il nome host.

+0

Ho letto più volte il primo paragrafo ma ancora non capisco. Se l'utente richiede '/ team.aspx', allora mi aspetterei che' Request.Url.AbsolutePath' restituisca '/ team.aspx'. Da dove proviene '/page.aspx? Id = 137'? –

+0

@Marcelo - Ma non sta riscrivendo l'url. – JonH

+0

Jonathan, se si utilizza qualsiasi forma di riscrittura dell'URL, l'URL su AbsolutePath non è lo stesso URL su RawUrl. RawUrl è ciò che è stato inviato tramite HTTP Request ed è ciò che l'utente vede sul suo browser. –

0

Vorrei utilizzare Request.Url.OriginalString.

Il percorso assoluto elimina la parte host dell'URL.

Date un'occhiata a questo: http://wdevs.blogspot.com/2009/03/url-properties-of-request-to-aspnet.html

+0

Ma 'OriginalString' include la stringa di query. So che potrei toglierlo, ma cosa c'è di sbagliato nel reindirizzamento a 'Request.Url.AbsolutePath'? Finché sto reindirizzando verso lo stesso dominio, non sono sicuro di aver capito il problema. –

+0

@JOnathan Wood - È stato letto male il tuo post, hai ragione, non ci sono problemi con quello che stai cercando di fare. Se non si desidera che i parametri di query siano effettivi, utilizzare 'Request.Url.AbsolutePath' – JonH

Problemi correlati