API rdb.altlinux.org отвечает с Access-Control-Allow-Origin: * только когда запрос пришёл с заголовком Origin. Но nginx кеширует ответ по URL без учёта Origin, поэтому если первым запись попросил клиент без Origin (curl, скрипт), в кеш ложится ответ без CORS-заголовка, и все последующие браузерные запросы к тому же URL получают HIT без заголовка. В браузере это «TypeError: Failed to fetch». Воспроизведение (2026-09-08): $ curl -s -D - -o /dev/null -H 'Origin: http://example.org' 'https://rdb.altlinux.org/api/vuln/cve?vuln_id=CVE-2025-10230&exclude_json=true' | grep -i -E '^HTTP|access-control|x-cache' HTTP/2 200 x-cache-status: HIT (заголовка Access-Control-Allow-Origin нет) $ curl -s -D - -o /dev/null -H 'Origin: http://example.org' 'https://rdb.altlinux.org/api/vuln/cve?vuln_id=CVE-2025-10230&exclude_json=true&x=1' | grep -i -E '^HTTP|access-control|x-cache' HTTP/2 200 access-control-allow-origin: * x-cache-status: MISS Тот же URL, отличается только попадание в кеш. Ответы 404 (например, vuln_id=CVE-2099-0001) заголовок несут всегда. Ожидаемое: Access-Control-Allow-Origin присутствует на каждом ответе независимо от кеша. Либо приложение отдаёт заголовок всегда (значение * не зависит от Origin, так что условие на Origin ничего не даёт), либо nginx добавляет его сам (add_header в location /api/ с always), либо кеш учитывает Origin (proxy_cache_key с $http_origin или Vary: Origin от приложения). Контекст: gitoskop (git.altlinux.org/gitoskop) показывает по наведению на CVE/BDU/GHSA в %changelog краткую запись из rdb.altlinux.org/api/vuln/{cve,bdu,ghsa} прямо из браузера. Пока обходим постоянным параметром &via=gitoskop в URL, чтобы наши записи кеша всегда рождались от запроса с Origin.