在ASP.NET MVC中redirect()与RedirectPermanent()
Redirect()
和RedirectPermanent()
之间有什么区别。 我读过一些文章,但是我不明白什么时候必须使用Redirect()
和RedirectPermanent()
。 你能举一个例子吗?
两者之间的基本区别在于, RedirectPermanent
向浏览器发送HTTP 301
(永久移动)状态码,而Redirect
将发送HTTP 302
状态码。
如果资源已经永久移动,并且不再可以在以前的位置访问,请使用RedirectPermanent
。 大多数浏览器都会caching这个响应并自动执行redirect,而不需要再次请求原始资源。
如果将来可能在相同位置(URL)中使用资源,请使用Redirect
。
例
假设你的系统中有用户。 您也可以select删除现有用户。 您的网站有一个资源/user/{userid}
,显示给定用户的详细信息。 如果用户已被删除,则必须redirect到/user/does-not-exist
页面。 在这种情况下:
如果用户永远不会恢复,那么即使URL指向/user/{userid}
,也应该使用RedirectPermanent
以便浏览器可以直接进入/user/does-not-exist
于后续请求中。
如果用户未来可能未被删除,则应使用常规Redirect
。
RedirectPermanent
是301, Redirect
是302状态码
他们发送不同的响应代码给浏览器。 301是永久redirect,302是临时redirect。 最终的效果是一样的,但是如果客户想要索引链接(最常见的客户端是这样的search引擎),那么永久redirect会告诉客户端更新其logging以忽略旧的链接并开始使用新的链接。 临时redirect会告诉客户端该页面现在正在redirect,但不会从其索引数据库中删除旧链接