പ്രോക്സി വഴി ലഭിച്ച പ്രതികരണം ആപേക്ഷിക 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 നിർമ്മാണത്തിലാണോ പിന്നീട് ശ്രമിച്ച കണക്ഷനിലാണോ എന്ന് കാണിക്കുന്നു.

അനുബന്ധ ലേഖനങ്ങൾ