perl - 如何在 Perl 中编写缓存 HTTP 代理?

标签 perl http caching proxy

我打算使用 HTTP::Proxy 在 Perl 中编写一个简单的 HTTP 代理模块。 我很清楚如何创建代理和基本过滤器等非常基本的任务。但我无法理解的是如何通过缓存手动强制提供文件。

基本上,场景是这样的,我在计算机A上运行这个代理。计算机B上的用户访问网络使用这个代理。现在,这个代理将只是作为所有 B 请求的传递,直到他请求一个特定的 URL(一个文件,比如 http://abc.com/file.zip )。我需要拦截这个请求,而不是让他下载实际的 file.zip,给他一个我手动保存在计算机 A 上的已经下载的文件。

另外请注意,我可能没有在计算机 A 上运行的网络服务器,所以我不能只重定向 url,我需要从缓存中提供它。

如有任何指点,我们将不胜感激。 谢谢

编辑:更多信息。我开始结合使用 HTTP::Daemon 和 LWP::UserAgent 而不是 HTTP::Proxy 到目前为止,我成功拦截了所有请求,然后我在 header 中搜索 url。如果特定文件名不存在,我只是使用 LWP:UserAgent (simple_request) 将请求传递到实际目的地,并使用 send_response 将响应返回给原始发件人。如果找到文件名,我不会进一步转发请求,而是尝试使用“send_file_response”方法提供我的特定文件。问题是所有其他请求都正常工作,comp B 可以上网,但是当它尝试下载这个文件时,它只是一直在等待响应。 关于使用 squid,我无法在这些机器上安装 squid。

最佳答案

直接使用Squid不是更好吗?对于这样的事情?

关于perl - 如何在 Perl 中编写缓存 HTTP 代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/715895/

相关文章:

regex - Perl 模式匹配,我们打印所有匹配部分,但仅打印匹配部分(而不是其余部分)

windows - perlbrew 可以在 Windows 上运行吗?

http - Windows 服务器在端口 8080 上没有响应

php - 在同一台机器上 PHP 和 node.js 之间通信的最快方式是什么?

java - 上传大文件时暂停/恢复 Httpurl 连接 - Android

android - 如何在android中缓存和存储对象并设置过期策略?

perl - 如何在推送中使用 Perl 默认数组变量 @_?

linux - 如何将linux或perl中特定列中的科学记数法更改为数字

google-chrome - Chrome 和 Safari 不缓存大视频

PHP常量__FILE__与URL中的不一样