Назад к вопросам
Junior
158
questionbank

Как работает перенаправление (redirect) в HTTP?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Перенаправление в HTTP — это механизм, при котором веб-сервер сообщает клиенту (браузеру), что запрошенный ресурс перемещен на другой URL. Клиент затем автоматически выполняет новый запрос по указанному адресу. Основные коды состояния HTTP для перенаправления:

  • 301 Moved Permanently: Ресурс был окончательно перемещен. Клиенту следует использовать новый URL для будущих запросов. Поисковые системы передают ссылочный вес.
  • 302 Found (ранее "Moved Temporarily"): Ресурс временно доступен по другому адресу. Клиенту следует продолжать использовать исходный URL для будущих запросов. Поисковые системы обычно не передают ссылочный вес.
  • 303 See Other: Ответ на запрос, обычно POST, предписывающий клиенту получить ресурс по другому URL с использованием метода GET.
  • 307 Temporary Redirect: Аналогичен 302, но не позволяет сменить метод HTTP (например, POST остается POST).
  • 308 Permanent Redirect: Аналогичен 301, но не позволяет сменить метод HTTP.

Процесс:

  1. Клиент отправляет запрос к URL A.
  2. Сервер, вместо отправки содержимого URL A, возвращает HTTP-ответ с кодом состояния перенаправления (например, 301) и заголовком Location, содержащим новый URL (URL B).
  3. Клиент (браузер) автоматически извлекает URL B из заголовка Location и отправляет новый запрос к URL B.
  4. Сервер обрабатывает запрос к URL B и возвращает соответствующий ответ (например, 200 OK).

В Node.js с использованием Express.js перенаправление выполняется методом res.redirect():

// Пример перенаправления 302
app.get('/old-path', (req, res) => {
  res.redirect('/new-path'); // По умолчанию 302
});

// Пример перенаправления 301
app.get('/legacy-path', (req, res) => {
  res.redirect(301, '/modern-path');
});

Заголовки:

Заголовок HTTP Значение Описание
Location /new-path или https://example.com/ Указывает новый URL для перенаправления.

Перенаправления используются для исправления опечаток в URL, перемещения веб-сайтов, обеспечения HTTPS, слияния страниц и URL-шоутенинга.