我想编写一个扭曲的代理,将非常大的GET请求拆分为较小的固定大小范围,并将其发送到另一个代理(使用Range:bytes)。另一个代理不允许大的响应,当响应很大时,它返回502。
如何实现扭曲的代理,在502错误时尝试将请求拆分为较小的允许块。文档很难遵循。我知道我需要扩展ProxyRequest,但是从那里我有点卡住了。
它不必是一个扭曲的代理,但它似乎很容易修改,我设法至少让它通过将connectTCP设置为我的代理(在ProxyRequest中)将未修改的请求转发到代理.parsed)。
答案 0 :(得分:1)
实际上,扩展ProxyRequest可能不是最简单的方法。 ProxyRequest非常强烈地假设一个请求=一个响应,而在这里你想要将一个请求拆分成多个请求。
更简单的是简单地编写一个Resource实现,它可以执行您想要的操作,简单地说就是:
render_GET
中,使用Agent
NOT_DONE_YET
request.write
,然后发出带Range
标题的新请求request.finish
您只需使用Resource
构建Site
对象,并将isLeaf
上的Resource
设置为true,这样您的Resource
就不必实现任何遍历逻辑,只需使用request.prePathURL
和request.postpath
构建网址即可。 (request.postpath
遗憾地没有记录;它是请求中尚未遍历的路径段的列表。)