Назад к вопросам
Junior
135
questionbank
Как работает редирект в HTTP?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Редирект в HTTP — это механизм перенаправления клиента (браузера) с одного URL на другой.
Работает это следующим образом:
- Клиент отправляет HTTP-запрос на исходный URL.
- Сервер получает запрос и вместо отправки страницы для исходного URL, отправляет HTTP-ответ с одним из статус-кодов перенаправления (например,
301- постоянное,302- временное). - В этом ответе сервер также включает заголовок
Locationс новым URL, на который нужно перенаправить клиента. - Браузер, получив ответ со статус-кодом перенаправления и заголовком
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);