Ruby Net::HTTP POST sorğusunu proksi vasitəsilə göndərin
Ruby HTTP bağlantısını açıq proksi ilə konfiqurasiya edin, sonra forma məlumatlarını təyinat yerinə göndərin.
Formanın təyinatını sorğuda, proksini isə bağlantı konfiqurasiyasında saxlayın. Proksiyə istədiyiniz URL-i daşıyan xüsusi forma sahəsi lazım deyil, əgər konkret saytın veb-proksi interfeysindən istifadə etmirsinizsə.
Ruby-nin Net::HTTP üçün müştəri yaradılarkən açıq HTTP proksisi verilə bilər:
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) }
Proksi nümunə üçündür; icazə verilən ictimai forma testləri üçün HTTP namizədləri HTTP proksi siyahısında mövcuddur. Forma son nöqtəsi göndərişi qəbul etmək üçün nəzərdə tutulmuş xidmətlə əvəz edilməlidir. Net::HTTP proksi sənədləri həmçinin proksi etimadnamələrini və mühitdən alınan proksi parametrlərini təsvir edir.
Proksini günahlandırmadan əvvəl cavabı oxuyun
Formanı rədd edən server proksi marşrutu düzgün işlədikdən sonra HTTP xətası yarada bilər. Cavab statusunu və təyinatın tələblərini yoxlayın: metod, məzmun növü, forma sahələri, kukilər və hər hansı sorğu tokeni.
Proksi autentifikasiya çağırışı proksidən gəlir. Tətbiqə giriş və ya rədd edilmiş forma təyinat yerinə aiddir. Onların etimadnamələrini ayrı saxlayın. Təyinat parolunu proksi konfiqurasiyasına əlavə etmək təyinatın girişini təmin edə bilməz.
Squid yönləndirmə başlığı qaydaları başqa bir mümkün çaşqınlıq mənbəyidir. Onların server tərəfli siyasəti etibarlı Ruby POST qurmaqdan ayrıdır. Forma bir dəfə uğursuz oldu deyə paylaşılan proksinin başlıq qaydalarını dəyişməyin.
Təkrar cəhdlər üçün ilk göndərişin artıq emal oluna biləcəyini nəzərə alın. İtirilmiş cavab POST-un tətbiqə heç vaxt çatmadığına sübut deyil.