How to remove server name from response header in python (SimpleHTTPRequestHandler)

1.1k views Asked by At

i want to remove/change server name

  class MyServer(SimpleHTTPRequestHandler):
       def _setHeader(self):
          self.send_response(200)
          self.send_header('Content-Type','text/html; charset=utf-8')
          self.send_header('Access-Control-Allow-Origin',"*")
          self.send_header('Access-Control-Allow-Credentials','true')
          self.send_header('Server','Custom name')
          self.end_headers()

enter image description here

self.send_header('Server','Custom name')

i tried to change server name but it's not working

please help me

Thanks in advance

2

There are 2 answers

1
SCL On

Haven't used it in a while but the server_version field should do the trick.

class MyServer(SimpleHTTPRequestHandler):
    def _setHeader(self):
        self.send_response(200)
        self.server_version = "Server: NameYouWant"
        self.send_header('Content-Type', 'text/html; charset=utf-8')
        self.send_header('Access-Control-Allow-Origin', "*")
        self.send_header('Access-Control-Allow-Credentials', 'true')
        self.end_headers()

0
Tovask On

You can override the class variables server_version and sys_version:

class MyServer(SimpleHTTPRequestHandler):
    server_version = 'MyServer/1.2'
    sys_version = 'MyProgram/3.4'

This will produce the header: Server: MyServer/1.2 MySoftware/3.4

https://docs.python.org/3/library/http.server.html