Send ein Ruby Net::HTTP POST gjennom ein proxy
Set opp ein Ruby HTTP-tilkopling med ein eksplisitt proxy, og send deretter skjemadata til destinasjonen.
Hald destinasjonen til skjemaet i førespurnaden og proxyen i tilkoplingskonfigurasjonen. Ein proxy treng ikkje eit eige skjemafelt med URL-en du vil ha, med mindre du brukar web-proxygrensesnittet til ein bestemd nettstad.
For Net::HTTP i Ruby kan ein eksplisitt HTTP-proxy oppgivast når klienten blir oppretta:
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) }
Proxyen er illustrativ; HTTP-kandidatar for tillatne testar av offentlege skjema er tilgjengelege i lista over HTTP-proxyar. Endepunktet til skjemaet må bytast ut med ein teneste som er meint å ta imot innsendinga. Proxy-dokumentasjonen til Net::HTTP skildrar òg proxy-legitimasjon og proxyinnstillingar som kjem frå miljøet.
Les svaret før du klandrar proxyen
Ein tenar som avviser eit skjema, kan produsere ein HTTP-feil etter at proxy-ruta har fungert rett. Kontroller svarbstatusen og krava til destinasjonen: metode, innhaldstype, skjemafelt, informasjonskapslar og ein eventuell førespurnadstoken.
Ei proxy-autentiseringsutfordring kjem frå proxyen. Ei applikasjonsinnlogging eller eit avvist skjema høyrer til destinasjonen. Hald legitimasjonen deira åtskild. Å leggje til eit destinasjonspassord i proxykonfigurasjonen kan ikkje oppfylle innlogginga til destinasjonen.
Squid sine reglar for vidaresendingshovud er ei anna mogleg kjelde til forvirring. Deira serversidepolitikk er åtskild frå å byggje ein gyldig Ruby POST. Ikkje endre hovudreglane til ein delt proxy berre fordi skjemaet feila éin gong.
Ved nye forsøk, vurder om den første innsendinga alt kan ha vorte handsama. Eit tapt svar er ikkje prov på at ein POST aldri nådde applikasjonen.