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)
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.