【发布时间】:2016-03-08 11:18:56
【问题描述】:
如果我使用Response.RedirectLocation ="login.aspx" 重定向页面,那么它与Responce.Redirect("~/login.aspx") 有何不同?
谢谢
【问题讨论】:
-
RedirectLocation 只是设置位置标头。重定向设置标题,设置正确的状态代码,包括一个快速的 HTML sn-p 说明资源已移动。
如果我使用Response.RedirectLocation ="login.aspx" 重定向页面,那么它与Responce.Redirect("~/login.aspx") 有何不同?
谢谢
【问题讨论】:
Response.Redirect(url); 导致 302 重定向(临时重定向)并关闭导致用户浏览器重定向到备用 URL 的响应。
如果您想永久更新一个 URL,例如您对 URL 结构进行了更改,并且希望让全世界知道这是一个永久更改(即搜索引擎从旧 URL 传递排名到新的),那么这应该通过 301 永久重定向来指示。
这可以按如下方式完成:
Response.Status = "301 Permanent Redirect";
Response.StatusCode = 301;
Response.RedirectLocation = "http://newurl.com/";
Response.End();
注意:Response.RedirectLocation 不会停止处理前面的代码(与 Response.Redirect() 不同)。这意味着除非您想继续处理任务,否则您需要关闭连接。
总结一下:
Response.Redirect() 总是会导致 302 临时重定向,并停止处理
Response.RedirectLocation 允许更多控制,例如设置正确的状态代码,或在需要时继续进一步处理。
【讨论】:
RedirectLocation 设置Location HTTP 标头。 Redirect 做得更多,并以 3xx 状态码完成响应。
【讨论】: