[Python] BaseHTTPServer/SimpleHTTPServer

Bonjour,

J'ai créé un serveur web Python basé sur SimpleHTTPServer.
Mon problème est qu'il renvoie toujours son identification:
Server: SimpleHTTP/0.6 Python/2.5.1

Je ne trouve pas comment le supprimer.

J'ai bien fait un:
self.server_version = ""
self.sys_version  = ""

mais il renvoie encore le header "Server:" (vide).
Je voudrai le supprimer totalement.

Merci.

2 réponses

  1. Modérateur
    Bon, je crois que j'ai pas trop le choix :-/

    Merci.
    -1
    1. Modérateur
      Salut Seb,

      En regardant dans les sources du module BaseHTTPServer.py, j'ai trouvé ça:
      def send_response(self, code, message=None):
              """Send the response header and log the response code.
      
              Also send two standard headers with the server software
              version and the current date.
      
              """
              self.log_request(code)
              if message is None:
                  if code in self.responses:
                      message = self.responses[code][0]
                  else:
                      message = ''
              if self.request_version != 'HTTP/0.9':
                  self.wfile.write("%s %d %s\r\n" %
                                   (self.protocol_version, code, message))
                  # print (self.protocol_version, code, message)
              self.send_header('Server', self.version_string())
              self.send_header('Date', self.date_time_string())
      
      def send_header(self, keyword, value):
              """Send a MIME header."""
              if self.request_version != 'HTTP/0.9':
                  self.wfile.write("%s: %s\r\n" % (keyword, value))
      
              if keyword.lower() == 'connection':
                  if value.lower() == 'close':
                      self.close_connection = 1
                  elif value.lower() == 'keep-alive':
                      self.close_connection = 0

      Comme tu peux le voir, l'envoi du champs Server est inconditionnel...sans appel :-(

      Je serais toi, je ferais une classe qui hérite de BaseHTTPRequestHandler, qui surcharge la méthode send_header pour filtrer
      le champs Server.

      Valà...
      1