Επανεπικύρωση λήψης μέσω διαμεσολαβητή με Cache-Control: no-cache
Ζητήστε μια επικυρωμένη απάντηση χωρίς να αλλάξετε το URL λήψης και χωρίς να συγχέετε την επανεπικύρωση με απαγόρευση αποθήκευσης.
Το URL λήψης είναι σωστό, αλλά ένας κοινόχρηστος διαμεσολαβητής έχει ακόμη αποθηκευμένη απάντηση. Αν η λειτουργία χρειάζεται απάντηση επικυρωμένη με την προέλευση, βάλτε αυτή την απαίτηση στο αίτημα:
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)
Αυτό το απόσπασμα υποθέτει ότι η εφαρμογή διαθέτει δυαδική ροή εξόδου και παρέχει HTTPS download_url. Για να δοκιμάσετε μια επιτρεπόμενη δημόσια λήψη χωρίς έλεγχο ταυτότητας διαμεσολαβητή, χρησιμοποιήστε έναν υποψήφιο τελικού σημείου HTTP από τη λίστα διαμεσολαβητών HTTP στο opener· η απαίτηση προσωρινής μνήμης του αιτήματος παραμένει ίδια. Διατηρεί το αρχικό URL του πόρου και ζητά από τις προσωρινές μνήμες στη διαδρομή του αιτήματος να επικυρώσουν πριν από την επαναχρησιμοποίηση.
Η επικύρωση μπορεί να επαναχρησιμοποιήσει τα αποθηκευμένα byte
Μια σύμμορφη προσωρινή μνήμη που λαμβάνει no-cache δεν μπορεί να ικανοποιήσει αυτό το αίτημα από αποθηκευμένη απάντηση χωρίς επιτυχή επικύρωση με την προέλευση. Η προέλευση μπορεί να επιβεβαιώσει ότι η αποθηκευμένη αναπαράσταση παραμένει έγκυρη, οπότε η λειτουργία δεν χρειάζεται να μεταδώσει ξανά ένα αμετάβλητο αρχείο από την προέλευση.
Το max-age=0 σε ένα αίτημα εκφράζει ένα όριο ηλικίας. Είναι χρήσιμο όταν η εφαρμογή θέλει απάντηση όχι παλαιότερη από αυτό το όριο, αλλά δεν είναι απαγόρευση αποθήκευσης. Μια απάντηση που μόλις δημιουργήθηκε μπορεί να το ικανοποιήσει.
Η προσθήκη τυχαίας παραμέτρου ερωτήματος ζητά διαφορετικό URI-στόχο. Αυτό μπορεί να δημιουργήσει άλλη καταχώριση προσωρινής μνήμης ή ακόμη να αλλάξει την απάντηση της εφαρμογής. Χρησιμοποιήστε παράμετρο ερωτήματος μόνο όταν αποτελεί μέρος της προβλεπόμενης διεπαφής του πόρου.
Για συνηθισμένο HTTPS CONNECT, ο διαμεσολαβητής σήραγγας δεν μπορεί να δει αυτή την κεφαλίδα μέσα στο TLS. Η πολιτική μπορεί παρ' όλα αυτά να φτάσει στην προέλευση και στις προσωρινές μνήμες που χειρίζονται την αποκρυπτογραφημένη ανταλλαγή HTTP. Ελέγξτε πού ζει πραγματικά η αποθηκευμένη απάντηση πριν την αποδώσετε στη σήραγγα.