[Python] BaseHTTPServer/SimpleHTTPServer

Fermé
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 - 3 oct. 2008 à 14:34
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 - 3 oct. 2008 à 16:11
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

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
3 oct. 2008 à 15:48
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
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
3 oct. 2008 à 16:11
Bon, je crois que j'ai pas trop le choix :-/


Merci.
-1