有一些方法可以从基于Twisted的Web应用程序的响应中删除HTTP Header'Server:TwistedWeb / 13.1.0'吗?
答案 0 :(得分:4)
您可以通过调用request.setHeader方法重写任何标头。
class RootPage(Resource):
def getChild(self, name, request):
request.setHeader('server', 'MyVeryOwnServer/1.0')
return OtherResource(name)
答案 1 :(得分:4)
此更改适用于您网站上的所有资源;你可以把它放在你的Site
课程中。您希望404或500错误也会返回正确的标题;所以你应该尽可能早地设置它,但不要在它自己设置之前设置它(为了覆盖它):
#!/usr/bin/env python
import sys
from twisted.web import server, resource
from twisted.internet import reactor
from twisted.python import log
class Site(server.Site):
def getResourceFor(self, request):
request.setHeader('server', 'Server/1.9E377')
return server.Site.getResourceFor(self, request)
# example from http://twistedmatrix.com/
class HelloResource(resource.Resource):
isLeaf = True
numberRequests = 0
def render_GET(self, request):
self.numberRequests += 1
request.setHeader("content-type", "text/plain")
return "I am request #" + str(self.numberRequests) + "\n"
log.startLogging(sys.stderr)
reactor.listenTCP(8080, Site(HelloResource()))
reactor.run()
默认服务器http标头在t.w.server.version
中指定。
答案 2 :(得分:0)
我知道这是一个老问题,但如果您想删除服务器http标头。我在谈论
request.setHeader('Server', 'SomeServer')
如果您未指定值,则由Twisted Web自动设置。您可以使用内部Headers类删除它。例如,
request.responseHeaders.removeHeader('Server')
这将删除Server Http Header。