Maaaring gumana ang request sa session.get() at pumalya sa certificate verification matapos isulat muli bilang PreparedRequest. Hindi ginagawa ng low-level send path ang parehong environment merge ng normal na request method.

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)

Mag-merge gamit ang huling prepared URL pagkatapos ng mga nilalayong URL change. Nakadepende sa destinasyon ang proxy at bypass decisions, kaya maaaring mali ang settings para sa naunang URL sa request na talagang ipapadala.

Madaling makaligtaan ang CA setting

Kapag naka-enable ang normal na environment trust, isinasaalang-alang ng merge ang REQUESTS_CA_BUNDLE at fallback nitong CURL_CA_BUNDLE kung hindi tahasang na-override ang verification. Hindi ginagawa ang CA lookup na iyon kapag direktang tinawag ang send na default ang verify. Tinatakpan lang ng pagpatay sa verification ang pagkakaiba sa halip na magbigay ng nilalayong certificate store.

Inilalapat din ng Session.prepare_request() ang preparation behavior ng session. Ibang pagpili ang direktang paggawa ng request gamit ang Request.prepare(); huwag asahang awtomatikong mailalapat ang session cookies o ibang session preparation.

Mas tiyak ang tuntunin para sa proxies

Hindi tamang sabihing binabalewala ng bawat PreparedRequest ang proxy environment variables. Sa Requests 2.34.2, nireresolba ng send ang proxy defaults kapag wala ang proxies keyword. Nilalaktawan ng pagbibigay ng proxies={} sa send ang partikular na default-resolution branch na iyon.

Iba ang papel ng empty dictionary na ibinibigay sa merge_environment_settings: maaaring punan ito ng merge ng naaangkop na environment routes bago ipasa sa send. Nakakaligtaan ang magkaibang tumatanggap na method kapag empty dictionary lang sa dalawang snippet ang tinitingnan.

Sa sariling request-building code, pagsamahin ang preparation, environment merge at sending. Kapag sadyang gumagamit ang application ng trust_env=False, iginagalang ng merge ang patakarang iyon; hindi nito ipinipilit ang environment settings sa client na sadyang nag-disable sa mga ito.

Kaugnay na mga artikulo