પ્રોક્સી દ્વારા સાપેક્ષ Location ને અનુસરો
વર્તમાન લક્ષ્ય URL સામે સાપેક્ષ Location ઉકેલો, પ્રોક્સીનું સરનામું URL ઉકેલની બહાર રાખીને.
પ્રોક્સી દ્વારા મળેલ પ્રતિસાદ સાપેક્ષ 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 બાંધકામની છે કે પછી પ્રયત્ન કરેલ જોડાણની.