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


80

У чому різниця між Redirect()і RedirectPermanent(). Я прочитав кілька статей, але я не розумію, коли ми повинні використовувати Redirect()і RedirectPermanent(). Чи можете ви показати шматки прикладу.

Відповіді:


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може дратувати під час налагодження, оскільки при другому натисканні дія контролера буде пропущена, і в початковій функції не буде досягнуто точки розриву, якщо вона перенаправляє в інше місце. Тобто, якщо ви не очистите кеш перед кожним клацанням.
Антуан Пелтьє

Якщо ви коли-небудь допустили помилку, неправильно використовуючи постійне переспрямування, чи є спосіб передати це браузеру, який уже відвідав і отримав постійне перенаправлення?
eaglei22

17

RedirectPermanent301 і Redirect302 код стану


12
Довідково: браузери можуть запам’ятати 301 і більше ніколи не натискати вихідну URL-адресу, якщо захочуть, тоді як 302 вказує на те, що їм слід повторно перевіряти кожен раз, чи переспрямування все ще є. Фактична реалізація, звичайно, може відрізнятися, але це намір 301 і 302
Майкл Штум

1

Вони надсилають різні коди відповідей у ​​браузер. 301 - це постійне перенаправлення, 302 - тимчасове. Кінцевий ефект той самий, але якщо клієнт хоче індексувати посилання (найпоширенішим клієнтом, який це робить, будуть пошукові системи), то постійне переспрямування повідомляє клієнту оновити свої записи, щоб ігнорувати старе посилання та почати використовувати нове . Temp redirect повідомляє клієнтові, що сторінка наразі переспрямовує, але не видаляє старе посилання з бази даних індексації

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.