Назад к вопросам
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.
Процесс:
- Клиент отправляет запрос к URL A.
- Сервер, вместо отправки содержимого URL A, возвращает HTTP-ответ с кодом состояния перенаправления (например, 301) и заголовком
Location, содержащим новый URL (URL B). - Клиент (браузер) автоматически извлекает URL B из заголовка
Locationи отправляет новый запрос к URL B. - Сервер обрабатывает запрос к 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-шоутенинга.