Rules Hub
Code Ruleset
Rule priority, scope & exceptions
Use this to align rules with the senior-level structure (P0/P1/P2, scope, exceptions/tradeoffs).
Partition cached CORS responses by their allowed origin
When Access-Control-Allow-Origin varies by request origin, include Origin in the effective cache key and append Vary for caches that honor it. Verify the actual CDN policy.
Bad example
| 1 | res.setHeader('Access-Control-Allow-Origin', allowedOrigin); |
| 2 | res.append('Vary', 'Origin'); |
| 3 | res.setHeader('Cache-Control', 's-maxage=60'); |
Explanation (EN)
Vary alone cannot separate origins when the configured shared cache ignores that header. A valid stored response can be served with the wrong CORS header.
Objašnjenje (HR)
Sam Vary ne razdvaja izvore ako ga konfigurirani zajednički cache zanemaruje. Valjan spremljeni odgovor može biti poslužen s pogrešnim CORS zaglavljem.
Good example
| 1 | res.setHeader('Access-Control-Allow-Origin', allowedOrigin); |
| 2 | res.append('Vary', 'Origin'); |
| 3 | res.setHeader('Cache-Control', 'private, no-store'); |
Explanation (EN)
Until the effective shared key includes every varying CORS input, disable shared storage. Alternatively configure and verify an origin-aware CDN key.
Objašnjenje (HR)
Dok stvarni zajednički ključ ne uključuje sve promjenjive CORS ulaze, onemogući zajedničku pohranu. Druga mogućnost je konfigurirati i provjeriti CDN ključ koji uključuje izvor.
Notes (EN)
Apply to cacheable cross-origin responses whose allow-origin header changes by caller. Check cache hits as well as cache fills. Restricting which origin may populate a cache does not restrict who can read that stored variant. Preserve existing Vary values with append. Validate provider cache-key behavior rather than assuming the CDN honors Vary.
Bilješke (HR)
Primijeni na odgovore za različite izvore kojima se allow-origin zaglavlje mijenja prema pozivatelju. Provjeri čitanje iz cachea i spremanje u njega. Ograničavanje izvora koji smije napuniti cache ne ograničava tko može dobiti spremljenu varijantu. Očuvaj postojeće Vary vrijednosti dodavanjem. Provjeri stvarnu politiku ključa pružatelja umjesto pretpostavke da CDN poštuje Vary.
Exceptions / Tradeoffs (EN)
A deliberately fixed allow-origin contract or identical wildcard response may not vary by origin. A documented unsupported local-development combination may be accepted, but do not claim it works for all allowed origins. CORS is not a replacement for server-side authentication or authorization.
Iznimke / Tradeoffi (HR)
Namjerno fiksan allow-origin ugovor ili jednak odgovor s wildcardom ne mora ovisiti o izvoru. Dokumentirana nepodržana lokalna razvojna kombinacija može biti prihvaćena, ali nemoj tvrditi da radi za sve dopuštene izvore. CORS ne zamjenjuje autentikaciju i autorizaciju na poslužitelju.