Response.Redirect和Response.RedirectLocation有什么区别?

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

1
RedirectLocation 只设置了 location header。而 Redirect 则会设置 header,正确的状态码,并包含一个简短的 HTML 片段,说明资源已经移动。 - INDIA IT TECH
2个回答

4

Response.Redirect(url);会导致302重定向(临时重定向)并关闭响应,使用户的浏览器被重定向到替代URL。

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

1

RedirectLocation设置了Location HTTP头。 Redirect做了更多的事情,并使用3xx状态码完成响应。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接