Simpan destinasi borang dalam permintaan dan proksi dalam konfigurasi sambungan. Proksi tidak memerlukan medan borang khas yang mengandungi URL yang anda mahu, kecuali anda menggunakan antara muka proksi web sesuatu laman web tertentu.

Untuk Net::HTTP Ruby, proksi HTTP eksplisit boleh diberikan semasa mencipta klien:

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 hanyalah ilustrasi; calon HTTP untuk ujian borang awam yang dibenarkan tersedia dalam senarai proksi HTTP. Titik akhir borang mesti digantikan dengan perkhidmatan yang bertujuan menerima penyerahan. Dokumentasi proksi Net::HTTP juga menerangkan kelayakan proksi dan tetapan proksi yang diperoleh daripada persekitaran.

Baca respons sebelum menyalahkan proksi

Pelayan yang menolak borang boleh menghasilkan ralat HTTP selepas laluan proksi berfungsi dengan betul. Semak status respons dan keperluan destinasi: kaedah, jenis kandungan, medan borang, kuki dan sebarang token permintaan.

Cabaran pengesahan proksi datang daripada proksi. Log masuk aplikasi atau borang yang ditolak adalah milik destinasi. Simpan kelayakan mereka secara berasingan. Menambah kata laluan destinasi pada konfigurasi proksi tidak dapat memenuhi log masuk destinasi.

Peraturan pengepala penghantaran Squid ialah satu lagi sumber kekeliruan yang mungkin. Dasar sebelah pelayan mereka berasingan daripada membina POST Ruby yang sah. Jangan ubah peraturan pengepala proksi kongsi hanya kerana borang gagal sekali.

Untuk cubaan semula, pertimbangkan sama ada penyerahan pertama mungkin sudah diproses. Respons yang hilang bukan bukti bahawa POST tidak pernah sampai kepada aplikasi.

Artikel berkaitan