השאירו את יעד הטופס בבקשה ואת הפרוקסי בתצורת החיבור. פרוקסי אינו זקוק לשדה טופס מיוחד עם הכתובת הרצויה, אלא אם אתם משתמשים בממשק פרוקסי אינטרנט של אתר מסוים.

עבור Net::HTTP של Ruby, אפשר לספק פרוקסי HTTP מפורש בעת יצירת הלקוח:

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) }

הפרוקסי הוא להמחשה; מועמדי HTTP לבדיקות טופס ציבורי מותרות זמינים ברשימת פרוקסי HTTP. יש להחליף את נקודת הקצה של הטופס בשירות שנועד לקבל את השליחה. תיעוד הפרוקסי של Net::HTTP מתאר גם אישורי פרוקסי והגדרות פרוקסי הנגזרות מהסביבה.

קראו את התגובה לפני שמאשימים את הפרוקסי

שרת שדוחה טופס יכול להפיק שגיאת HTTP לאחר שמסלול הפרוקסי עבד כראוי. בדקו את סטטוס התגובה ואת דרישות היעד: שיטה, סוג תוכן, שדות טופס, קובצי cookie וכל אסימון בקשה.

אתגר אימות פרוקסי מגיע מהפרוקסי. התחברות ליישום או טופס שנדחה שייכים ליעד. שמרו על הפרדה בין אישורי הגישה. הוספת סיסמת יעד לתצורת הפרוקסי אינה יכולה לספק את ההתחברות ליעד.

כללי כותרות ההעברה של Squid הם מקור בלבול אפשרי נוסף. המדיניות שלהם בצד השרת נפרדת מבניית POST תקין של Ruby. אל תשנו את כללי הכותרות של פרוקסי משותף רק מפני שהטופס נכשל פעם אחת.

בניסיונות חוזרים, שקלו האם ייתכן שהשליחה הראשונה כבר עובדה. תגובה שאבדה אינה הוכחה ש-POST מעולם לא הגיע ליישום.

מאמרים קשורים