Încerc să adaug etag verificarea cache-ului bazată pe o aplicație web pe care am dezvoltat-o și care rulează pe Apache prin intermediul unui proxy invers NGINX. Aplicația web este scrisă în Perl. În scriptul Perl, verific pentru $ENV{'HTTP_IF_NONE_MATCH'} antet și apoi testați etag în ea, dacă există. Dacă accesez aplicația prin cURL, funcționează:
timothybutler@timothys-MacBook-Pro ~ % curl -I https://server/resource/podcast/20211101.mp3
HTTP/1.1 200 OK
Server: nginx/1.21.4
Data: vineri, 12 noiembrie 2021 18:06:37 GMT
Tip de conținut: audio/mpeg
Lungimea conținutului: 16665729
Conexiune: păstrați-vă în viață
Surogat-Control: fără cache
Cache-Control: private,max-age=864000
Etichetă: „1635825322”
Dând asta etag înapoi prin cURL, obțin rezultatul așteptat:
timothybutler@timothys-MacBook-Pro ~ % curl -H „Dacă nu se potrivește: „1635825322”” -I https://server/resource/podcast/20211101.mp3
HTTP/1.1 304 Nemodificat
Server: nginx/1.21.4
Data: vineri, 12 noiembrie 2021 18:19:29 GMT
Conexiune: păstrați-vă în viață
Cache-Control: privat, vârsta maximă=864000
Etichetă: „1635825322”
Cu toate acestea, procesul se întrerupe dacă îl încerc în Chrome. Chrome trimite rapoarte Dacă nu se potrivește: „1635825322” ca unul dintre antete când reîmprospătează pagina, dar serverul meu nu setează HTTP_IF_NONE_MATCH variabilă de mediu pentru acea cerere contrar celei care a venit prin cURL. Dacă arunc tot hash-ul %ENV, Dacă-Se potrivește-Niciuna antetul și acesta etag pur și simplu nu este prezent sub nicio formă atunci când Chrome emite cererea.