Redirect()
和之间有什么区别RedirectPermanent()
。我已经阅读了一些文章,但是我不明白何时必须使用Redirect()
and RedirectPermanent()
。您能举个例子吗?
Answers:
两者之间的基本区别是RedirectPermanent
向浏览器发送HTTP 301
(永久移动)状态代码,而向浏览器Redirect
发送HTTP 302
状态代码。
使用RedirectPermanent
如果资源已被永久删除,将不再是先前的位置访问。大多数浏览器将缓存此响应并自动执行重定向,而无需再次请求原始资源。
Redirect
如果该资源将来可能在同一位置(URL)可用,请使用。
例
假设您的系统中有用户。您还可以选择删除现有用户。您的网站具有/user/{userid}
显示给定用户详细信息的资源。如果已删除用户,则必须重定向到该/user/does-not-exist
页面。在这种情况下:
如果永远不会恢复用户,则应该使用RedirectPermanent
,/user/does-not-exist
即使URL指向,浏览器也可以直接进入后续请求/user/{userid}
。
如果将来有可能恢复用户,则应使用常规的Redirect
。
RedirectPermanent
在调试时可能会很烦人,因为第二次单击时,如果控制器重定向到其他位置,则将跳过控制器的操作并且原始功能中不会达到断点。除非您在每次单击之前清空缓存。
RedirectPermanent
是301和Redirect
302状态代码
它们向浏览器发送不同的响应代码。301是永久重定向,302是临时重定向。最终结果是相同的,但是如果客户端要索引链接(最常见的客户端将是搜索引擎),则永久重定向会告诉客户端更新其记录以忽略旧链接并开始使用新链接。临时重定向告诉客户端该页面目前正在重定向,但不会从其索引数据库中删除旧链接