我有需要重新回到當前頁面減去任何查詢參數。Response.Redirect(Request.Url.AbsolutePath)總是「安全」嗎?
我剛剛發現Request.Url.AbsolutePath
,看起來它只是提供了傳遞給Response.Redirect()
的票。
它似乎在我的開發機器上工作沒關係。有誰知道任何潛在的問題重定向到這個屬性的價值?在所有情況下很難確認它是「安全」的。
我有需要重新回到當前頁面減去任何查詢參數。Response.Redirect(Request.Url.AbsolutePath)總是「安全」嗎?
我剛剛發現Request.Url.AbsolutePath
,看起來它只是提供了傳遞給Response.Redirect()
的票。
它似乎在我的開發機器上工作沒關係。有誰知道任何潛在的問題重定向到這個屬性的價值?在所有情況下很難確認它是「安全」的。
這可能是一個問題,如果你在內部「重寫」的URL。例如,用戶請求「/team.aspx」,但在內部您傳輸執行或將URL重寫爲「/page.aspx?id=137」。
就個人而言,我更喜歡使用Request.RawUrl(它始終是本地的),並且可以去除查詢字符串。
擺脫請求的主機部分不是問題,因爲HTTP重定向可以是絕對路徑(「/ foo/bar」)上的路徑,瀏覽器將保留協議,端口和主機名。
我會使用Request.Url.OriginalString。
絕對路徑擺脫了URL的主機部分。
在此請看:http://wdevs.blogspot.com/2009/03/url-properties-of-request-to-aspnet.html
但'OriginalString'包含查詢字符串。我知道我可以剝離它,但是重定向到Request.Url.AbsolutePath?有什麼問題?只要我重定向到同一個域,我不確定我是否理解這個問題。 –
@JOnathan Wood - 誤讀你的文章,你是對的,你想做的事情沒有問題。如果你不想要實際的查詢參數,那麼使用'Request.Url.AbsolutePath' – JonH
我多次閱讀你的第一段,但仍然不太明白。如果用戶請求'/ team.aspx',那麼我希望'Request.Url.AbsolutePath'返回'/ team.aspx'。 '/ page.aspx?id = 137'從哪裏來? –
@Marcelo - 但他不重寫網址。 – JonH
Jonathan,如果使用任何形式的URL重寫AbsolutePath上的URL與RawUrl上的URL不是相同的。 RawUrl是通過HTTP請求發送的,它是用戶在瀏覽器上看到的內容。 –