【发布时间】:2011-10-15 13:49:17
【问题描述】:
我需要在减去任何查询参数的情况下重定向回当前页面。
我刚刚找到Request.Url.AbsolutePath,看起来它只是提供了传递给Response.Redirect() 的票。
它似乎在我的开发机器上工作正常。有谁知道重定向到该属性值的任何潜在问题?很难确认它在所有情况下都是“安全的”。
【问题讨论】:
我需要在减去任何查询参数的情况下重定向回当前页面。
我刚刚找到Request.Url.AbsolutePath,看起来它只是提供了传递给Response.Redirect() 的票。
它似乎在我的开发机器上工作正常。有谁知道重定向到该属性值的任何潜在问题?很难确认它在所有情况下都是“安全的”。
【问题讨论】:
如果您在内部“重写”了 URL,则可能会出现问题。例如,用户请求“/team.aspx”,但在内部您转移执行或将 url 重写为“/page.aspx?id=137”。
就个人而言,我更喜欢使用 Request.RawUrl(它始终是本地的),您可以剥离查询字符串。
摆脱请求的主机部分不是问题,因为 HTTP 重定向可以是绝对路径(“/foo/bar”)上的路径,并且浏览器将保留协议、端口和主机名。
【讨论】:
/team.aspx,那么我希望Request.Url.AbsolutePath 返回/team.aspx。 /page.aspx?id=137 来自哪里?
我会使用 Request.Url.OriginalString。
绝对路径去掉了 URL 的主机部分。
看看这个:http://wdevs.blogspot.com/2009/03/url-properties-of-request-to-aspnet.html
【讨论】:
OriginalString 包含查询字符串。我知道我可以去掉它,但是重定向到Request.Url.AbsolutePath 有什么问题?只要我重定向到同一个域,我就不确定我是否理解问题。
Request.Url.AbsolutePath