有没有办法使用Ruby';s net/http将表单数据发布到http代理?

有没有办法使用Ruby';s net/http将表单数据发布到http代理?,ruby,proxy,squid,Ruby,Proxy,Squid,我有一个基本的Squid服务器设置,我正在尝试使用Ruby的Net::HTTP::Proxy类将表单数据发送到指定的HTTP端点 我认为我可以做到以下几点: Net::HTTP::Proxy(my_host, my_port).start(url.host) do |h| req = Net::HTTP::Post.new(url.path) req.form_data = { "xml" => xml } h.request(req) end 但是,唉,

我有一个基本的Squid服务器设置,我正在尝试使用Ruby的Net::HTTP::Proxy类将表单数据发送到指定的HTTP端点

我认为我可以做到以下几点:

  Net::HTTP::Proxy(my_host, my_port).start(url.host) do |h|
    req = Net::HTTP::Post.new(url.path)
    req.form_data = { "xml" => xml }
    h.request(req)
  end

但是,唉,代理和非代理的Net::HTTP类似乎没有使用代理IP地址。我的远程服务响应,告诉我它收到了来自错误IP地址的请求,即:不是代理。我正在寻找一种特定的方法来编写这个过程,这样我就可以通过代理成功地发送一个表单帖子。帮助?:)

哈,事实证明这是正确的方法,我的问题实际上是Squid和我正在推动的API。与此问题相关的有趣提示,如果您使用Squid代理服务器代理,可能需要添加此服务器配置选项:

header_access X-Forwarded-For deny all

这将确保代理完全忽略与HTTP端点相关的调用方IP地址的任何关系。

您可能还想看看基于Perl的WWW::mechanize的mechanize gem。如果它与Perl类似(我相信它是),那么它封装了您正在处理的许多常见混乱

红宝石:


Perl:

您介意我添加一个基于此代码的示例吗?另外,你也可以随意用叉子叉起来,自己加上:)当然可以!那很好。