Requests PreparedRequest a gosodiadau amgylchedd coll
Cadwch geisiadau parod pwrpasol yn gyson â thriniaeth arferol Requests o ddirprwyon a CA, heb dybio bod pob send lefel isel yn anwybyddu dirprwyon.
Gall cais weithio drwy session.get() a methu gwirio tystysgrif ar ôl cael ei ailysgrifennu fel PreparedRequest. Nid yw’r llwybr send lefel isel yn rhedeg yr un uno amgylchedd â’r dull request arferol.
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)
Unwch gan ddefnyddio’r URL parod terfynol, ar ôl unrhyw newidiadau URL bwriadedig. Mae penderfyniadau dirprwy ac osgoi yn dibynnu ar y gyrchfan, felly gall gosodiadau ar gyfer URL cynharach fod yn anghywir i’r cais a anfonwch mewn gwirionedd.
Mae gosodiad CA yn hawdd ei golli
Gydag ymddiriedaeth arferol yn yr amgylchedd ymlaen, mae uno’n ystyried REQUESTS_CA_BUNDLE a’i ddewis wrth gefn CURL_CA_BUNDLE pan nad yw gwirio wedi’i ddiystyru’n benodol. Nid yw galw send yn uniongyrchol gyda verify diofyn yn gwneud y chwiliad CA hwnnw. Mae diffodd gwirio yn cuddio’r gwahaniaeth yn lle darparu’r storfa dystysgrifau fwriadedig.
Mae Session.prepare_request() hefyd yn defnyddio ymddygiad paratoi’r sesiwn. Mae creu cais yn uniongyrchol gyda Request.prepare() yn ddewis ar wahân; peidiwch â disgwyl iddo ddefnyddio cwcis sesiwn neu baratoi sesiwn arall yn awtomatig.
Mae rheol fwy penodol ar gyfer dirprwyon
Byddai’n anghywir dweud bod pob PreparedRequest yn anwybyddu newidynnau amgylchedd dirprwy. Yn Requests 2.34.2, mae send yn datrys diofynion dirprwy pan fo’r arg proxies yn absennol. Mae darparu proxies={} i send yn hepgor y gangen benodol honno.
Mae gan y geiriadur gwag a roddir i merge_environment_settings rôl wahanol: gall yr uno ei lenwi â llwybrau amgylchedd perthnasol cyn ei basio i send. Mae edrych ar eiriadur gwag yn unig mewn dau ddarn cod yn colli’r dulliau gwahanol sy’n ei dderbyn.
Mewn cod creu cais pwrpasol, cadwch baratoi, uno amgylchedd ac anfon gyda’i gilydd. Pan fo’r rhaglen yn defnyddio trust_env=False yn fwriadol, mae’r uno’n parchu’r polisi; nid yw’n ffordd o orfodi gosodiadau amgylchedd ar gleient sydd wedi’u diffodd yn fwriadol.