Redirect () против RedirectPermanent () в ASP.NET MVC

80

В чем разница между Redirect()иRedirectPermanent() . Я читал несколько статей, но не понимаю, когда нужно использовать Redirect()и RedirectPermanent(). Можете показать кусочки на примере.

IFrizy
источник

Ответы:

147

Основное различие между ними заключается в том, RedirectPermanentчто браузеру отправляется HTTP 301код состояния (перемещен Redirectнавсегда ), тогда как код состояния отправляется HTTP 302.

Используйте, RedirectPermanentесли ресурс был перемещен навсегда и больше не будет доступен в предыдущем местоположении. Большинство браузеров кэшируют этот ответ и автоматически выполняют перенаправление без повторного запроса исходного ресурса.

Используйте, Redirectесли ресурс может быть доступен в том же месте (URL) в будущем.

пример

Допустим, у вас есть пользователи в вашей системе. У вас также есть возможность удалить существующих пользователей. На вашем веб-сайте есть ресурс, /user/{userid}который отображает подробную информацию о данном пользователе. Если пользователь был удален, вы должны перенаправить на /user/does-not-existстраницу. В этом случае:

Если пользователь никогда не будет восстановлен снова, вы должны использовать, RedirectPermanentчтобы браузер мог напрямую переходить к /user/does-not-existпоследующим запросам, даже если URL-адрес указывает на /user/{userid}.

Если пользователь может быть восстановлен в будущем, вам следует использовать обычный Redirect.

Мерёви
источник
6
Обратите внимание, что это RedirectPermanentможет раздражать при отладке, потому что при втором нажатии действие контроллера будет пропущено, и точка останова не будет достигнута в исходной функции, если она перенаправляется в другое место. Это если вы не очищаете кеш перед каждым щелчком.
Antoine Pelletier
Если вы когда-либо совершали ошибку, неправильно используя постоянное перенаправление, есть ли способ сообщить об этом браузеру, который уже посетил и получил постоянное перенаправление?
eaglei22 06
17

RedirectPermanent301 и Redirect302 код статуса

dm03514
источник
12
Для справки: браузеры могут запомнить 301 и никогда больше не обратиться к исходному URL-адресу, если захотят, в то время как 302 указывает, что им следует повторно проверять каждый раз, сохраняется ли перенаправление. Фактические реализации, конечно, могут отличаться, но это цель 301 и 302
Майкл Штум
1

Они отправляют браузеру разные коды ответа. 301 - постоянный редирект, 302 - временный. Конечный эффект такой же, но если клиент хочет проиндексировать ссылки (наиболее распространенным клиентом, который это делает, будут поисковые системы), то постоянное перенаправление говорит клиенту обновить свои записи, чтобы игнорировать старую ссылку и начать использовать новую. . Временное перенаправление сообщает клиенту, что страница перенаправляется на данный момент, но не удаляет старую ссылку из своей базы данных индексации.

Абхишек Саха
источник