Pošaljite Ruby Net::HTTP POST kroz proxy
Konfigurirajte Ruby HTTP vezu s eksplicitnim proxyjem, a zatim pošaljite podatke obrasca na odredište.
Držite odredište obrasca u zahtjevu, a proxy u konfiguraciji veze. Proxyju nije potrebno posebno polje obrasca s URL-om koji želite, osim ako koristite web-proxy sučelje određenog sajta.
Za Rubyjev Net::HTTP eksplicitni HTTP proxy može se navesti pri stvaranju klijenta:
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) }
Proxy je ilustrativan; HTTP kandidati za dopuštene testove javnih obrazaca dostupni su na listi HTTP proxyja. Krajnja točka obrasca mora se zamijeniti servisom namijenjenim prihvatanju slanja. Net::HTTP dokumentacija o proxyju također opisuje proxy akreditive i postavke proxyja izvedene iz okruženja.
Pročitajte odgovor prije nego okrivite proxy
Server koji odbija obrazac može proizvesti HTTP grešku nakon što je proxy ruta ispravno radila. Provjerite status odgovora i zahtjeve odredišta: metodu, tip sadržaja, polja obrasca, kolačiće i eventualni token zahtjeva.
Izazov proxy autentifikacije dolazi od proxyja. Prijava u aplikaciju ili odbijeni obrazac pripadaju odredištu. Držite njihove akreditive odvojeno. Dodavanje lozinke odredišta u konfiguraciju proxyja ne može zadovoljiti prijavu na odredište.
Squid pravila zaglavlja prosljeđivanja još su jedan mogući izvor zabune. Njihova politika na strani servera odvojena je od izgradnje valjanog Ruby POST-a. Ne mijenjajte pravila zaglavlja dijeljenog proxyja samo zato što je obrazac jednom pao.
Za ponovne pokušaje razmotrite je li prvo slanje već možda obrađeno. Izgubljeni odgovor nije dokaz da POST nikada nije stigao do aplikacije.