【问题标题】:What is the difference between Responce.Redirect and Response.RedirectLocation?Responce.Redirect 和 Response.RedirectLocation 有什么区别?
【发布时间】:2016-03-08 11:18:56
【问题描述】:

如果我使用Response.RedirectLocation ="login.aspx" 重定向页面,那么它与Responce.Redirect("~/login.aspx") 有何不同? 谢谢

【问题讨论】:

  • RedirectLocation 只是设置位置标头。重定向设置标题,设置正确的状态代码,包括一个快速的 HTML sn-p 说明资源已移动。

标签: c# asp.net redirect


【解决方案1】:

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 允许更多控制,例如设置正确的状态代码,或在需要时继续进一步处理。

【讨论】:

    【解决方案2】:

    RedirectLocation 设置Location HTTP 标头。 Redirect 做得更多,并以 3xx 状态码完成响应。

    【讨论】:

      猜你喜欢
      • 2010-10-02
      • 2011-12-12
      • 2010-09-16
      • 2012-03-14
      • 2012-02-06
      • 2011-02-25
      • 2011-11-22
      • 2015-03-26
      • 2013-08-19
      相关资源
      最近更新 更多