پروکسی کے ذریعے موصول ہونے والا جواب متعلقہ 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 کی تعمیر کی ہے یا بعد میں آزمائے گئے کنکشن کی۔

متعلقہ مضامین