Практическая проверка Python 3.15 RC1: как проверить default Content-Type и extra response headers в Python 3.15 http.server только на локальном стенде. Изолированный fixture, отрицательный контроль, таблица наблюдений, критерий остановки и безопасный пакет для поддержки.
Граница изменения: как проверить custom headers в локальном http.server
Python 3.15 добавляет default_content_type и --content-type для неизвестных расширений, а также extra_response_headers и CLI -H/--header; изменения относятся к gh-113471 и gh-135057. Это подтверждает интерфейс Python 3.15 RC1, но не наличие проблемы в вашем проекте. Практический риск здесь конкретный: Новый header удобен для fixture, но легко получить дубли Content-Type, неверное применение к известным расширениям или ложное ощущение production-защиты от dev-сервера. Перед опытом запишите версию Python, одну наблюдаемую величину и ожидаемую ветку. RC1 остаётся предварительным выпуском: установите его в отдельный virtual environment или контейнер, не поверх рабочего interpreter. Не переносите в стенд production-конфиги, реальные адреса, tokens, полные environment dumps и пользовательские данные.
Обратимый стенд для gh-113471, gh-135057
Рекомендуемый минимальный опыт: Запустите server на 127.0.0.1 и случайном порту из temp-каталога с файлами known.txt и unknown.fixture. Сделайте HEAD и GET к обоим, добавьте один безопасный X-Fixture header и заранее выбранный default content type, затем полностью остановите процесс. Все входы должны быть синтетическими, короткими и воспроизводимыми. Каждый вариант получает новый объект, файл или процесс, если cache и global state способны изменить наблюдение. Ограничьте время, размер временных файлов и число повторов заранее; cleanup выполняйте в finally и удаляйте только созданный temp-root. Один запуск показывает конкретный результат, но не частоту проблемы и не готовность всего приложения к миграции.
Контроль и таблица наблюдений
Собирайте строки «path | method | status | Content-Type values | X-Fixture values | body bytes | server stderr». Запрос к .txt проверяет, что известный MIME не заменён default без основания; запрос без кастомных параметров служит baseline. Не используйте внешнее bind, рабочие каталоги и чувствительные файлы. Порядок baseline, target, fresh baseline помогает увидеть загрязнение стенда. Пустое поле не равно нулю, отсутствие исключения не подтверждает правильный результат, а изменение двух независимых параметров сразу лишает опыт диагностической силы. Если повторы расходятся, сохраните все строки и пометьте результат unstable, не выбирая самый удобный прогон.
Зелёный критерий и стоп-линия
Passed допустим только если Неизвестное расширение получает ровно один ожидаемый Content-Type, известное сохраняет своё определение, custom header присутствует один раз, а процесс слушает только loopback и завершён. Статус not reproduced означает лишь отсутствие симптома на этом fixture; blocked — нехватку capability или источника; failed control возвращает проверку к стенду. Стоп-линия: Не переносите http.server в production и не добавляйте через него CORS, CSP или auth как замену проверенному reverse proxy. Нельзя получать зелёный результат broad except, отключением защиты, увеличением лимита до исчезновения ошибки или повторением до случайного успеха. Любая новая гипотеза получает отдельную строку, а не добавляется задним числом в объяснение уже выполненного опыта.
Минимальный пакет для поддержки
Передайте maintainer только две curl-команды, response headers, bind address, PID тестового процесса и список temp-файлов без содержимого домашнего каталога. Добавьте московский timestamp, точную версию 3.15.0rc1, команды воспроизведения и заранее заданный зелёный критерий. Удалите usernames, hostnames, IP, абсолютные домашние пути, токены, cookies, содержимое рабочих файлов и лишние строки журналов. Официальные и первичные источники подтверждают gh-113471, gh-135057 и change boundary, но не подтверждают результат вашего опыта, массовость боли, будущую индексацию или позиции страницы. Такой пакет позволяет повторить одну ветку без раскрытия данных и без смешения соседних причин.
Материал подготовлен редакцией VOne с помощью ИИ по открытым официальным и первичным источникам; факты, даты и ссылки перепроверены. Реальные пользовательские данные и вымышленные результаты тестов не использовались.
Источники и проверка
- What’s New in Python 3.15 проверено 2026-08-30
- CPython gh-113471 — default HTTP content type проверено 2026-08-30
- CPython gh-135057 — custom response headers проверено 2026-08-30
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.