การตอบกลับที่ได้รับผ่านพร็อกซีอาจส่ง Location แบบสัมพัทธ์กลับมา:

Location: ../new/

HTTP สมัยใหม่อนุญาตให้ใช้ URI อ้างอิงได้ที่นี่ แก้ไขมันเทียบกับ URL ที่สร้างการตอบกลับ หาก URL นั้นคือ https://docs.example/catalog/old/ การอ้างอิงข้างต้นชี้ไปที่ https://docs.example/catalog/new/ ชื่อโฮสต์ของพร็อกซีไม่ใช่ฐาน

สำหรับคำขอ Python urllib ทั่วไป ให้ใช้ตัวจัดการการเปลี่ยนเส้นทางแทนการต่อสตริงรอบจุดสิ้นสุดของพร็อกซี:

opener = build_opener(ProxyHandler({
    "https": "http://proxy.example:8080",
}))
with opener.open("https://docs.example/catalog/old/",
                 timeout=15) as response:
    final_url = response.geturl()

สำหรับคำขอเอกสารสาธารณะที่ไม่มีการรับรองความถูกต้องพร็อกซีนี้ ผู้สมัคร HTTP จากรายการพร็อกซี HTTP สามารถแทนที่จุดสิ้นสุดตัวอย่างได้เมื่อได้รับอนุญาตเส้นทาง คลาสมาจาก urllib.request ตัวจัดการปกติจะติดตามการเปลี่ยนเส้นทางที่รองรับภายในขอบเขตของมัน final_url อธิบาย URL ของทรัพยากรปลายทาง ไม่ใช่ตัวกลางที่ใช้ไปถึงมัน

แก้ไขก่อน แล้วจึงเลือกเส้นทางถัดไป

การเปลี่ยนเส้นทางสามารถเปลี่ยนโฮสต์หรือสคีมาปลายทางได้ นโยบายพร็อกซีที่อิงปลายทางจึงต้องประเมิน URL ใหม่นั้นด้วย เส้นทางที่ใช้ได้กับโฮสต์แรกอาจไม่ใช่เส้นทางสำหรับโฮสต์ถัดไป

เมื่อคุณใช้งานการจัดการการเปลี่ยนเส้นทางเอง ให้ใช้การแก้ไข URI อ้างอิงพร้อมการจัดการส่วนจุด รักษากฎของเมธอดตามรหัสสถานะจริงและกำหนดขีดจำกัดการเปลี่ยนเส้นทาง การต่อ Location เข้ากับชื่อโฮสต์ไม่ใช่สิ่งทดแทนอัลกอริทึมการแก้ไขนั้น

หากการเปลี่ยนเส้นทางล้มเหลว ให้เก็บ URL ที่ร้องขอ สถานะการตอบกลับ ค่า Location และ URL ถัดไปที่แก้ไขแล้ว ค่าสี่ค่านี้มักแสดงว่าความล้มเหลวเป็นของการสร้าง URL หรือการเชื่อมต่อที่พยายามในภายหลัง

บทความที่เกี่ยวข้อง