6

有什么方法可以从基于 Twisted 的 Web 应用程序的响应中删除 HTTP 标头“服务器:TwistedWeb/13.1.0”?

4

3 回答 3

5

您可以通过调用 request.setHeader 方法重写任何标头。

class RootPage(Resource):
    def getChild(self, name, request):
        request.setHeader('server', 'MyVeryOwnServer/1.0')
        return OtherResource(name)
于 2013-12-11T22:05:04.320 回答
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

于 2013-12-11T23:50:58.377 回答
1

我知道这是一个老问题,但是如果您想删除服务器 http 标头。我说的是

request.setHeader('Server', 'SomeServer')

如果您未指定值,则由 Twisted Web 自动设置。您可以使用内部 Headers 类将其删除。例如,

request.responseHeaders.removeHeader('Server')

这将删除服务器 Http 标头。

于 2016-09-29T09:23:31.350 回答