Requests PreparedRequest ja puuduvad keskkonnaseaded
Hoia kohandatud ettevalmistatud päringud kooskõlas Requestsi tavapärase proxy- ja CA-käsitlusega, eeldamata et iga madala taseme send eirab puhverservereid.
Päring võib session.get() kaudu töötada ning PreparedRequestiks ümber kirjutatuna serdi kontrollis ebaõnnestuda. Madala taseme send-tee ei tee sama keskkonna ühendamist kui tavaline request-meetod.
import requests
with requests.Session() as session:
request = requests.Request("GET", "https://example.com/")
prepared = session.prepare_request(request)
settings = session.merge_environment_settings(
prepared.url, {}, None, None, None
)
response = session.send(
prepared,
timeout=(5, 15),
**settings,
)
response.raise_for_status()
print(response.status_code)
Ühenda lõpliku ettevalmistatud URL-iga pärast kavandatud URL-muudatusi. Puhverserveri- ja möödaviiguotsused sõltuvad sihtkohast, seega varasema URL-i seaded võivad päriselt saadetavale päringule valed olla.
CA-seade on lihtne märkamata jätta
Kui tavaline keskkonna usaldamine on sisse lülitatud, arvestab ühendamine REQUESTS_CA_BUNDLE ja selle varuvarianti CURL_CA_BUNDLE, kui kontrolli pole otseselt üle kirjutatud. Otse send-i kutsumine vaikimisi verify-seadega ei tee seda CA-otsingut. Kontrolli väljalülitamine peidab erinevuse, mitte ei anna soovitud serdihoidlat.
Session.prepare_request() rakendab ka seansi ettevalmistuskäitumist. Päringu otse Request.prepare() abil loomine on eraldi valik; ära eelda seansiküpsiste või muu seansi ettevalmistuse automaatset rakendamist.
Puhverserveritel on täpsem reegel
Oleks ebatäpne öelda, et iga PreparedRequest eirab puhverserveri keskkonnamuutujaid. Requests 2.34.2-s leiab send vaikimisi puhverserverid, kui võtmesõnaargument proxies puudub. proxies={} andmine send-ile jätab just selle vaikeväärtuste haru vahele.
merge_environment_settings-ile antud tühjal sõnastikul on muu roll: ühendamine võib täita selle sobivate keskkonnateedega enne send-ile edastamist. Ainult tühja sõnastiku nägemine kahes näites jätab märkamata erinevad meetodid, mis selle saavad.
Hoia oma päringuehituskoodis ettevalmistus, keskkonna ühendamine ja saatmine koos. Kui rakendus kasutab teadlikult trust_env=False, austab ühendamine seda poliitikat; see ei suru keskkonnaseadeid kliendile, kes need meelega keelas.