Magpadala ng Ruby Net::HTTP POST sa pamamagitan ng proxy
I-configure ang koneksyon ng Ruby HTTP gamit ang tahasang proxy, pagkatapos ipadala ang data ng form sa destinasyon.
Panatilihin ang destinasyon ng form sa kahilingan at ang proxy sa configuration ng koneksyon. Hindi kailangan ng proxy ang espesyal na field ng form na naglalaman ng URL na gusto mo, maliban kung ginagamit mo ang web-proxy interface ng isang partikular na website.
Para sa Net::HTTP ng Ruby, maaaring magbigay ng tahasang HTTP proxy kapag ginagawa ang client:
require 'net/http'
uri = URI('https://example.com/form')
http = Net::HTTP.new(uri.hostname, uri.port,
'203.0.113.10', 8080)
http.use_ssl = true
http.open_timeout = 5
http.read_timeout = 10
request = Net::HTTP::Post.new(uri.request_uri)
request.set_form_data('message' => 'hello')
response = http.start { |session| session.request(request) }
Ang proxy ay halimbawa lamang; ang mga kandidatong HTTP para sa pinapayagang pagsubok ng pampublikong form ay makukuha sa listahan ng HTTP proxy. Ang endpoint ng form ay dapat palitan ng serbisyong nilalayong tumanggap ng pagsusumite. Inilalarawan din ng dokumentasyon ng proxy ng Net::HTTP ang mga kredensyal ng proxy at mga setting na nagmula sa kapaligiran.
Basahin ang tugon bago sisihin ang proxy
Ang server na tumatanggi sa form ay maaaring maglabas ng HTTP error pagkatapos gumana nang tama ang rutang dumadaan sa proxy. Suriin ang status ng tugon at ang mga kinakailangan ng destinasyon: method, uri ng nilalaman, mga field ng form, cookies at anumang token ng kahilingan.
Ang hamon sa pagpapatotoo ng proxy ay nagmumula sa proxy. Ang pag-log in sa application o tinanggihang form ay pag-aari ng destinasyon. Panatilihing hiwalay ang kanilang mga kredensyal. Ang pagdaragdag ng password ng destinasyon sa configuration ng proxy ay hindi makakatugon sa pag-log in ng destinasyon.
Ang mga patakaran sa forwarding header ng Squid ay isa pang posibleng pinagmumulan ng kalituhan. Ang kanilang patakaran sa panig ng server ay hiwalay sa pagbuo ng wastong Ruby POST. Huwag baguhin ang mga patakaran sa header ng shared proxy dahil lang nabigo ang form nang isang beses.
Para sa mga muling pagtatangka, isaalang-alang kung ang unang pagsusumite ay maaaring naproseso na. Ang nawalang tugon ay hindi patunay na ang POST ay hindi kailanman nakarating sa application.