Permintaan boleh berfungsi melalui session.get() tetapi gagal dalam pengesahan sijil selepas ditulis semula sebagai PreparedRequest. Laluan send aras rendah tidak menjalankan penggabungan persekitaran yang sama seperti kaedah request biasa.

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)

Gabungkan dengan URL akhir yang telah disediakan selepas perubahan URL yang dikehendaki. Keputusan proksi dan pintasan bergantung pada destinasi, jadi tetapan untuk URL terdahulu mungkin salah bagi permintaan yang benar-benar dihantar.

Tetapan CA mudah terlepas pandang

Dengan kepercayaan persekitaran biasa diaktifkan, penggabungan mempertimbangkan REQUESTS_CA_BUNDLE dan sandarannya CURL_CA_BUNDLE apabila pengesahan tidak ditindih secara jelas. Memanggil send terus dengan verify lalai tidak melakukan carian CA itu. Mematikan pengesahan menyembunyikan perbezaan dan bukannya menyediakan stor sijil yang dimaksudkan.

Session.prepare_request() turut menggunakan tingkah laku persediaan sesi. Membina permintaan terus dengan Request.prepare() ialah pilihan berasingan; jangan jangka kuki sesi atau persediaan sesi lain digunakan secara automatik.

Proksi mempunyai peraturan lebih khusus

Tidak tepat untuk mengatakan setiap PreparedRequest mengabaikan pemboleh ubah persekitaran proksi. Dalam Requests 2.34.2, send menentukan proksi lalai apabila argumen kata kunci proxies tiada. Memberikan proxies={} kepada send melangkau cabang penentuan lalai itu.

Dictionary kosong yang diberi kepada merge_environment_settings mempunyai peranan berbeza: penggabungan boleh mengisinya dengan laluan persekitaran yang berkenaan sebelum dihantar kepada send. Melihat hanya dictionary kosong dalam dua petikan mengabaikan kaedah berbeza yang menerimanya.

Dalam kod pembinaan permintaan tersuai, kekalkan persediaan, penggabungan persekitaran dan penghantaran bersama. Apabila aplikasi sengaja menggunakan trust_env=False, penggabungan menghormati dasar itu; ia tidak memaksa tetapan persekitaran kepada klien yang sengaja mematikannya.

Artikel berkaitan