不幸的是twisted.web.proxy
是相當笨重的,並沒有寫入這種定製的想法。但是,可以通過多種不同的方式將新標頭注入到代理請求中。總體思路是在請求處理過程中勾選其中一個步驟,然後修改請求標題,以便包含新標題。
例如,你可以鉤到ProxyRequest.process
:
from twisted.web.proxy import ProxyRequest
class ChangeSomeHeadersProxyRequest(ProxyRequest):
def process(self):
self.changeHeaders()
return ProxyRequest.process(self)
def changeHeaders(self):
# Inject an extra request header.
self.requestHeaders.addRawHeader(b"Xzone", b"foo.com")
然後勾這份長達代理的其餘部分:
from twisted.web.proxy import Proxy
from twisted.web.server import Site
class ChangeSomeHeadersSite(Site):
protocol = Proxy
requestFactory = ChangeSomeHeadersProxyRequest
現在成立了ChangeSomeHeadersSite
,你會經常Site
。
您可能想要在GET行後添加標題。試圖做一些自定義的東西 –
。但也想知道如何實現這樣的自定義請求。瀏覽器發送正常的請求,並且雙絞線代理添加GET請求上方的Xzone:標頭。 – mikie
問題中的示例不是合法的HTTP請求。如果這真的是你想做的事情,那麼我不認爲Twisted Web將會幫助你很多(因爲Twisted Web對於HTTP來說不是非常HTTP)。 –