Beiðni getur virkað í gegnum session.get() en fallið á staðfestingu skilríkis eftir endurskrifun sem PreparedRequest. Lágstigs send-leiðin framkvæmir ekki sömu umhverfissameiningu og venjulega request-aðferðin.

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)

Sameinaðu með endanlegu undirbúnu URL eftir fyrirhugaðar breytingar á því. Ákvarðanir um milliþjón og framhjáhlaup ráðast af áfangastað, svo stillingar fyrir eldra URL geta verið rangar fyrir raunverulegu beiðnina.

Auðvelt er að missa af CA-stillingunni

Með venjulegt umhverfistraust virkt tekur sameining mið af REQUESTS_CA_BUNDLE og varakostinum CURL_CA_BUNDLE þegar staðfestingu hefur ekki verið sérstaklega hnekkt. Beint send-kall með sjálfgefinni verify-stillingu gerir ekki þá CA-leit. Að slökkva á staðfestingu felur misræmið í stað þess að afhenda fyrirhugaða skilríkjageymslu.

Session.prepare_request() beitir líka undirbúningshegðun setunnar. Að búa beiðni beint til með Request.prepare() er sérstakt val; ekki búast við sjálfvirkri beitingu setukaka eða annars setuundirbúnings.

Milliþjónar hafa nákvæmari reglu

Það væri rangt að segja að sérhver PreparedRequest hunsi proxy-umhverfisbreytur. Í Requests 2.34.2 leysir send sjálfgefin proxy-gildi þegar proxies-lykilviðfangið vantar. Að gefa send proxies={} sleppir þeirri tilteknu sjálfgefnu grein.

Tóma orðabókin sem fer til merge_environment_settings hefur annað hlutverk: sameiningin getur fyllt hana með viðeigandi umhverfisleiðum áður en hún fer til send. Að horfa aðeins á tóma orðabók í tveimur dæmum missir af mismunandi aðferðum sem fá hana.

Í sérsniðnum beiðnasmíðakóða skaltu hafa undirbúning, umhverfissameiningu og sendingu saman. Þegar forritið notar trust_env=False af ásetningi virðir sameiningin þá stefnu; hún neyðir ekki umhverfisstillingar inn í biðlara sem slökkti á þeim vísvitandi.

Tengdir greinar