Dilyn ailgyfeiriad cymharol drwy'r procsi
Datryswch Location cymharol yn erbyn URL cyrchfan gyfredol, gan gadw cyfeiriad y procsi allan o ddatrysiad URL.
Gall ymateb a gafwyd drwy brocsi ddychwelyd Location cymharol:
Location: ../new/
Mae HTTP modern yn caniatáu cyfeirnod URI yma. Datryswch ef yn erbyn yr URL a gynhyrchodd yr ymateb. Os mai https://docs.example/catalog/old/ oedd yr URL hwnnw, mae'r cyfeirnod uchod yn nodi https://docs.example/catalog/new/. Nid enw gwesteiwr y procsi yw'r sylfaen.
Ar gyfer ceisiadau Python urllib cyffredin, defnyddiwch ei driniwr ailgyfeirio yn hytrach na chyfuno llinynnau o amgylch pen draw'r procsi:
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()
Ar gyfer y cais hwn am ddogfen gyhoeddus heb ddilysu procsi, gall ymgeisydd HTTP o'r rhestr procsi HTTP ddisodli'r pen draw enghreifftiol pan fo'r llwybr yn cael ei ganiatáu. Daw'r dosbarthiadau o urllib.request. Mae ei driniwr arferol yn dilyn ailgyfeiriadau a gefnogir o fewn ei derfynau. Mae final_url yn disgrifio URL terfynol yr adnodd, nid y cyfryngwr a ddefnyddiwyd i'w gyrraedd.
Datryswch yn gyntaf, yna dewiswch y llwybr nesaf
Gall ailgyfeiriad newid gwesteiwr neu gynllun y gyrchfan. Felly mae angen i bolisi procsi sy'n seiliedig ar gyrchfan werthuso'r URL newydd hwnnw hefyd. Efallai nad yw llwybr a weithiodd ar gyfer y gwesteiwr cyntaf yn llwybr ar gyfer yr un nesaf.
Wrth weithredu trin ailgyfeiriadau eich hun, defnyddiwch ddatrysiad cyfeirnod URI gyda thrin segmentau dot. Cadwch reolau dull y cod statws gwirioneddol a gosodwch derfyn ailgyfeirio. Nid yw atodi Location at enw gwesteiwr yn cymryd lle'r algorithm datrysu hwnnw.
Os bydd ailgyfeiriad yn methu, cadwch yr URL a ofynnwyd amdano, statws yr ymateb, gwerth Location a'r URL nesaf a ddatryswyd. Mae'r pedwar gwerth hyn fel arfer yn dangos ai methiant ym adeiladu'r URL neu yn y cysylltiad a geisiodd wedyn.