Validasi ulang unduhan melalui proksi dengan Cache-Control: no-cache
Minta respons tervalidasi tanpa mengubah URL unduhan atau mencampuradukkan validasi ulang dengan larangan penyimpanan.
URL unduhan sudah benar, tetapi proksi bersama masih memiliki respons tersimpan. Jika operasi membutuhkan respons yang divalidasi dengan asal, letakkan persyaratan itu pada permintaan:
from urllib.request import ProxyHandler, Request, build_opener
import shutil
opener = build_opener(ProxyHandler({
"https": "http://proxy.example:8080",
}))
request = Request(download_url, headers={"Cache-Control": "no-cache"})
with opener.open(request, timeout=15) as response:
shutil.copyfileobj(response, output)
Fragmen ini mengasumsikan aplikasi memiliki aliran keluaran biner dan menyediakan HTTPS download_url. Untuk mencoba unduhan publik yang diizinkan tanpa autentikasi proksi, gunakan kandidat titik akhir HTTP dari daftar proksi HTTP di opener; persyaratan cache permintaan tetap sama. Ini mempertahankan URL sumber asli sambil meminta cache di jalur permintaan memvalidasi sebelum dipakai ulang.
Validasi dapat memakai kembali byte yang tersimpan
Cache yang patuh dan menerima no-cache tidak dapat memenuhi permintaan ini dari respons tersimpan tanpa validasi berhasil dengan asal. Asal dapat mengonfirmasi bahwa representasi tersimpan masih valid, sehingga operasi tidak perlu mengirim ulang berkas yang tidak berubah dari asal.
max-age=0 pada permintaan menyatakan batas usia. Ini berguna ketika aplikasi menginginkan respons yang tidak lebih tua dari batas itu, tetapi bukan larangan penyimpanan. Respons yang baru saja dihasilkan dapat memenuhinya.
Menambahkan parameter kueri acak meminta URI target yang berbeda. Itu dapat menghasilkan entri cache lain atau bahkan mengubah respons aplikasi. Gunakan parameter kueri hanya jika itu bagian dari antarmuka sumber yang dimaksudkan.
Untuk HTTPS CONNECT biasa, proksi terowongan tidak dapat melihat tajuk ini di dalam TLS. Kebijakan tetap dapat mencapai asal dan cache yang menangani pertukaran HTTP yang didekripsi. Periksa di mana respons tersimpan sebenarnya berada sebelum mengaitkannya dengan terowongan.