Frage

Wenn Sie eine CherryPy App ausgeführt wird Servernamen Tag etwas wie CherryPy / Version senden. Ist es möglich, umbenennen / überschreiben, dass aus der App ohne CherryPy zu modifizieren, so dass es noch etwas anderes zeigen?

Vielleicht so etwas wie MyAppName / Version (CherryPy / Version)

War es hilfreich?

Lösung 2

Eigentlich im IRC auf ihrem offiziellen Kanal fragt Fumanchu gived mir eine saubere Art und Weise, dies zu tun (letzte svn):

import cherrypy
from cherrypy import _cpwsgi_server 
class HelloWorld(object):
    def index(self):
        return "Hello World!"
    index.exposed = True

serverTag = "MyApp/%s (CherryPy/%s)" % ("1.2.3", cherrypy.__version__)
_cpwsgi_server.CPWSGIServer.environ['SERVER_SOFTWARE'] = serverTag
cherrypy.config.update({'tools.response_headers.on': True,
                        'tools.response_headers.headers': [('Server', serverTag)]})
cherrypy.quickstart(HelloWorld())

Andere Tipps

Dies kann nun auf Anwendungsbasis festgelegt werden, in der Konfigurationsdatei / dict

[/]  
response.headers.server = "CherryPy Dev01"

erscheint diese Zeichenfolge im CherrPy Antwort werden eingestellt werden Klasse:

def __init__(self):
  self.status = None
  self.header_list = None
  self._body = []
  self.time = time.time()

  self.headers = http.HeaderMap()
  # Since we know all our keys are titled strings, we can
  # bypass HeaderMap.update and get a big speed boost.
  dict.update(self.headers, {
    "Content-Type": 'text/html',
    "Server": "CherryPy/" + cherrypy.__version__,
    "Date": http.HTTPDate(self.time),
  })

Also, wenn Sie Ihre Response-Objekt erstellen, können Sie den „Server“ Header aktualisieren Sie Ihre gewünschte Zeichenfolge anzuzeigen. Aus der CherrPy Antwortobjektdokumentation :

  

Header

     

Ein Wörterbuch die Header der Antwort enthält. Sie setzen können Werte in   diese dict zu jeder Zeit vor der Finalisierung Phase, wonach CherryPy Schalter   zur Verwendung von header_list ...

Bearbeiten : Um nicht bei jedem Response-Objekt, diese Änderung zu machen Sie erstellen, eine einfache Möglichkeit, dies zu umgehen, die Response-Objekt zu wickeln ist. Zum Beispiel können Sie Ihr eigenes Response-Objekt erstellen, die von CherryPy-Kommentar erbt und aktualisieren die Header-Taste nach der Initialisierung:

class MyResponse(Response):

    def __init__(self):
        Response.__init__(self)
        dict.update(self.headers, {
            "Server": "MyServer/1.0",
        })

RespObject = MyResponse()
print RespObject.headers["Server"]

Dann können Sie Ihr Objekt für Anwendungen in dem Sie eine Response-Objekt erstellen müssen, und es wird der Server-Header auf die gewünschte Zeichenfolge immer.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top