Как переопределить строку версии сервера с помощью wsgiref.simple_server?

Используя Python 2.7.2 для OSX (darwin), я хотел бы скрыть или настроить заголовок ответа "Server", отправляемый wsgiref.simple_server.make_server().

Я пробовал много вещей без какого-либо успеха и был уверен, что этот пример кода должен работать:

from wsgiref import simple_server

class MyWSGIRequestHandler(simple_server.WSGIRequestHandler):

    server_version = "X/1"
    sys_version = "Y/2"

httpd = simple_server.make_server('', 8082, simple_server.demo_app, handler_class=MyWSGIRequestHandler)

print "version_string: %s %s" % (httpd.RequestHandlerClass.server_version, httpd.RequestHandlerClass.sys_version)
# it prints "X/1 Y/2" 
httpd.serve_forever()

Но это всегда одно и то же, и нет способа избавиться от "Server: WSGIServer / 0.1 Python / 2.7.2", отправленного сервером. Я также попытался переопределить метод version_string в моем классе, например, с помощью чего-то вроде этого:

class MyWSGIRequestHandler(simple_server.WSGIRequestHandler):
    def version_string(self):
        return "42"

Это ничего не меняет, я действительно не понимаю, что здесь происходит.

Может кто-то помочь мне, пожалуйста?

1 ответ

Я наконец нашел решение, нет необходимости переопределять WSGIRequestHandler.

from wsgiref.simple_server import ServerHandler
ServerHandler.server_software = "Fake Server Name Here"

И тогда вы можете вызвать make_server().

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