Что такое HTTP-редирект (перенаправление запроса)?

«Что такое HTTP-редирект (перенаправление запроса)?» — вопрос из категории HTTP и веб-протоколы, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HTTP-редирект — это механизм, при котором сервер отвечает клиенту (например, браузеру) статусом 3xx, указывая в заголовке Location новый URL для автоматического перехода.

Основные коды состояния:

  • 301 Moved Permanently — ресурс перемещён навсегда. Браузеры и поисковики кэшируют это перенаправление.
  • 302 Found / 307 Temporary Redirect — ресурс временно доступен по другому адресу.

Как проверить редирект в браузере:

  1. Откройте Инструменты разработчика (F12).
  2. Перейдите на вкладку Сеть (Network).
  3. Выполните запрос и найдите первый ответ со статусом 3xx.
  4. Проверьте заголовок Location в ответе — он содержит конечный URL.

Пример реализации на Python (Flask):

from flask import Flask, redirect

app = Flask(__name__)

@app.route('/old-page')
def old_endpoint():
    # Постоянный редирект с кодом 301
    return redirect('/new-page', code=301)

@app.route('/new-page')
def new_endpoint():
    return 'Контент новой страницы'

Практические аспекты для тестирования:

  • Убедитесь, что код ответа соответствует бизнес-логике (постоянный vs временный).
  • Проверьте, что заголовок Location содержит валидный и абсолютный URL.
  • Удостоверьтесь, что конечная страница после редиректа возвращает статус 200 OK и корректный контент.
  • Для SEO критично использовать 301 для постоянных переездов страниц.