Omdirigeringar i Python Requests: None kontra tomma proxyvärden
Håll avsikten med direkt routning explicit genom omdirigeringar i stället för att förlita dig på ett None-värde som tar bort en mappningspost.
Om en direkt begäran når en omdirigering och nästa utbyte misslyckas på en proxy, undersök övergången. Requests bygger om proxyrelaterade inställningar för omdirigeringar och kan rådgöra med miljön igen när Session litar på det.
| Mappningsvärde | Vad som händer vid sammanslagningen |
|---|---|
None | Nyckeln tas bort, vilket lämnar en saknad post som ett senare pass kan fylla från miljön. |
| En tom sträng | Det explicita värdet finns kvar; det kan bevara avsikten med direkt routning för det schemat. |
För en befintlig Session, ange de målscheman som ingår i den direkta åtgärden:
response = session.get(
'https://example.com/start',
proxies={'http': '', 'https': ''},
timeout=15,
)Kontrollera eventuella ytterligare värdspecifika mappningar och anpassade adaptrar om programmet tillhandahåller dem. Denna routningsindata åsidosätter inte varje möjlig policy som dessa komponenter implementerar.
Behåll varje URL i diagnostiken
Registrera den ursprungliga URL:en, varje omdirigeringsplats, svarsstatusen och steget som misslyckas. Övergången från HTTP till HTTPS ändrar den relevanta schemanyckeln; en ny värd kan hamna utanför den första värdens kringgåenderegel. En rapport som bara innehåller den inledande URL:en döljer båda övergångarna.
Att observera ett svar med omdirigeringsföljning avstängd kan blotta gränsen. Granska dess plats som data innan du bestämmer dig för att begära den; skicka inte de ursprungliga uppgifterna urskillningslöst till en ny destination.
En dedikerad Session med miljöupptäckt avstängd är ett annat alternativ när programmet medvetet äger alla routnings- och förtroendeindata. Det påverkar också automatisk upptäckt av uppgifter och CA, så välj det som en programpolicy snarare än en rutinmässig omdirigeringsreparation.