[Python] BaseHTTPServer/SimpleHTTPServer

sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   -  
sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   -
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. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    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
  2. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    Bon, je crois que j'ai pas trop le choix :-/

    Merci.
    -1