Mengikuti pengalihan relatif melalui proxy
Selesaikan Location relatif terhadap URL tujuan saat ini, dengan alamat proxy tetap di luar resolusi URL.
Respons yang diterima melalui proxy dapat mengembalikan Location relatif:
Location: ../new/
HTTP modern mengizinkan referensi URI di sini. Selesaikan terhadap URL yang menghasilkan respons. Jika URL itu adalah https://docs.example/catalog/old/, referensi di atas menunjuk ke https://docs.example/catalog/new/. Nama host proxy bukanlah basisnya.
Untuk permintaan Python urllib biasa, gunakan penangan pengalihannya alih-alih menyambung string di sekitar titik akhir proxy:
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()
Untuk permintaan dokumen publik tanpa autentikasi proxy ini, kandidat HTTP dari daftar proxy HTTP dapat menggantikan titik akhir contoh bila rutenya diizinkan. Kelas-kelas berasal dari urllib.request. Penangan normalnya mengikuti pengalihan yang didukung dalam batasnya. final_url menjelaskan URL sumber daya akhir, bukan perantara yang digunakan untuk mencapainya.
Selesaikan dulu, lalu pilih rute berikutnya
Pengalihan dapat mengubah host atau skema tujuan. Karena itu kebijakan proxy berbasis tujuan juga perlu mengevaluasi URL baru tersebut. Rute yang berhasil untuk host pertama mungkin bukan rute untuk host berikutnya.
Saat menerapkan penanganan pengalihan sendiri, gunakan resolusi referensi URI dengan penanganan segmen titik. Pertahankan aturan metode kode status yang sebenarnya dan terapkan batas pengalihan. Menambahkan Location ke nama host bukan pengganti algoritme resolusi itu.
Jika pengalihan gagal, pertahankan URL yang diminta, status respons, nilai Location, dan URL berikutnya yang telah diselesaikan. Keempat nilai itu biasanya menunjukkan apakah kegagalan berasal dari penyusunan URL atau dari koneksi yang dicoba sesudahnya.