Respons yang diterima melalui proksi boleh mengembalikan Location relatif:

Location: ../new/

HTTP moden membenarkan rujukan URI di sini. Selesaikannya terhadap URL yang menghasilkan respons. Jika URL itu ialah https://docs.example/catalog/old/, rujukan di atas menandakan https://docs.example/catalog/new/. Nama hos proksi bukan asasnya.

Untuk permintaan Python urllib biasa, gunakan pengendali ubah halanya dan bukannya mencantumkan rentetan di sekeliling titik akhir proksi:

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 awam tanpa pengesahan proksi ini, calon HTTP daripada senarai proksi HTTP boleh menggantikan titik akhir contoh apabila laluan dibenarkan. Kelas-kelas datang daripada urllib.request. Pengendali biasanya mengikut ubah hala yang disokong dalam hadnya. final_url menerangkan URL sumber akhir, bukan perantara yang digunakan untuk mencapainya.

Selesaikan dahulu, kemudian pilih laluan seterusnya

Ubah hala boleh menukar hos atau skema destinasi. Oleh itu dasar proksi berasaskan destinasi juga perlu menilai URL baharu itu. Laluan yang berkesan untuk hos pertama mungkin bukan laluan untuk hos seterusnya.

Apabila melaksanakan pengendalian ubah hala sendiri, gunakan penyelesaian rujukan URI dengan pengendalian segmen titik. Kekalkan peraturan kaedah kod status sebenar dan tetapkan had ubah hala. Menambahkan Location pada nama hos bukan pengganti algoritma penyelesaian itu.

Jika ubah hala gagal, kekalkan URL yang diminta, status respons, nilai Location dan URL seterusnya yang telah diselesaikan. Empat nilai itu biasanya menunjukkan sama ada kegagalan itu milik pembinaan URL atau sambungan yang dicuba selepasnya.

Artikel berkaitan