Получить доступ

Чем forward отличается от redirect?

MiddleСервлеты и фильтрыSpring
Ещё спрашивают так:
  • Меняется ли URL при forward?
Коротко

Forward — внутренняя передача запроса другому обработчику в том же запросе: URL в браузере не меняется, атрибуты запроса сохраняются. Redirect — ответ 302/303 с Location: браузер делает новый запрос по новому адресу.

  • Forward — только внутри приложения, один запрос
  • Redirect — можно на другой сайт, два запроса, данные — через URL или flash-атрибуты
  • После POST — redirect (Post/Redirect/Get)

А ещё В Spring MVC: "forward:/path" и "redirect:/path"

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Из механики следуют практические различия. forward дешевле (нет второго обращения к серверу) и сохраняет атрибуты запроса, но работает только внутри того же контекста — на внешний адрес переадресовать так нельзя. redirect дороже, зато меняет адресную строку, что решает классическую проблему повторной отправки формы по F5: после обработки POST делают redirect на GET. Поскольку redirect создаёт новый запрос, обычные атрибуты не переживают переход, и для однократной передачи данных существуют flash-атрибуты, живущие в сессии до следующего запроса.

Что хотят услышать

  • Различия по числу запросов, URL, области.
  • Когда что использовать.

Частые ошибки

  • Отвечать на POST рендерингом страницы вместо redirect и получать дубли при обновлении.
  • Пытаться пробросить атрибуты запроса через redirect обычным способом.

Проверьте себя

Несколько верных вариантов. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓forward происходит на сервере в рамках одного запроса, браузер о нём не знает и URL не меняется
  • ✓redirect отправляет клиенту ответ 3xx, и браузер делает новый запрос по новому адресу
  • ✓При redirect атрибуты исходного запроса теряются — для их передачи используют flash-атрибуты
  • ✗forward можно выполнить на внешний домен

Что спросят дальше

  • Что такое паттерн POST/Redirect/GET?
  • Где физически живут flash-атрибуты?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем