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

Как работает редирект в HTTP?

Sobes Copilot

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

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

sobes.tech AI

Редирект в HTTP — это механизм перенаправления клиента (браузера) с одного URL на другой.

Работает это следующим образом:

  1. Клиент отправляет HTTP-запрос на исходный URL.
  2. Сервер получает запрос и вместо отправки страницы для исходного URL, отправляет HTTP-ответ с одним из статус-кодов перенаправления (например, 301 - постоянное, 302 - временное).
  3. В этом ответе сервер также включает заголовок Location с новым URL, на который нужно перенаправить клиента.
  4. Браузер, получив ответ со статус-кодом перенаправления и заголовком Location, автоматически отправляет новый HTTP-запрос уже на URL, указанный в заголовке Location.

Примеры статус-кодов редиректа:

Статус-код Описание
301 Moved Permanently (Постоянно перемещен)
302 Found (Временно найден)
303 See Other (Смотри другое)
307 Temporary Redirect (Временное перенаправление)
308 Permanent Redirect (Постоянное перенаправление)

Пример HTTP-ответа с редиректом:

HTTP/1.1 301 Moved Permanently
Location: https://new-example.com/new/path/
Content-Length: 0

В Node.js редирект обычно реализуется через установку соответствующего статус-кода и заголовка Location в объекте ответа res.

Пример реализации в Express.js:

// В обработчике маршрута
app.get('/old-path', (req, res) => {
  res.redirect(301, '/new-path'); // Перенаправление с кодом 301 на /new-path
});

Пример реализации на чистом Node.js:

// В http-сервере
const http = require('http');

const server = http.createServer((req, res) => {
  if (req.url === '/old-path') {
    res.writeHead(302, { 'Location': '/new-path' }); // Временное перенаправление
    res.end();
  } else {
    // Обработка других запросов
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hello World!');
  }
});

server.listen(3000);