Как предварительно обработать запросы, прежде чем обрабатывать их с помощью BaseHTTPServer?

Я хочу запретить доступ к определенным путям на моем сервере, который использует CGIHttpServer модуль. Я создал белый список, который мне нужно будет проверять при каждом запросе, но моя проблема в том, как его реализовать.

Я пытался переопределить handle_one_request метод (который обрабатывает запрос и отправляет ответ), но проблема в том, что информация о пути недоступна до его запуска. Это значит, что я всегда буду либо слишком рано, либо слишком поздно. Теперь я думаю о копировании-вставке исходного источника функции и редактировании его самостоятельно или переопределении wfile.flush, что звучит слишком некрасиво.

Кто-нибудь может дать мне лучшее решение?

Вот исходный код для handle_one_request.

1 ответ

Вы можете переопределить run_cgi в CGIHTTPRequestHandler подкласс, и только вызов super когда ваш белый список совпадает.

Другие вопросы по тегам