Ошибка CSP ‘self’ в различных директивах

#content-security-policy

#content-security-policy

Вопрос:

Недавно я добавил CSP на свой веб-сайт и начал его тестирование (только для отчетов): все выглядит нормально, за исключением некоторых отчетов, в которых я не могу разобраться.
В частности, я вижу нарушения для ресурсов, которые должны быть разрешены директивой ‘self’.

На сервере запущен Express, и CSP обслуживается через helmet-csp. Я проверил заголовки политики CSP с помощью нескольких сервисов (например,https://csp-evaluator.withgoogle.com /) и он выходит без ошибок. Я использую report-uri.com для сбора и анализа отчетов CSP.

Это настройка шлема-csp:

 app.use(csp({
  directives: {
    'default-src': ["'none'"],
    'object-src': ["'none'"],
    'script-src': ["'self'", (req, res) => `'nonce-${res.locals.nonce}'`],
    'connect-src': ["'self'", (req, _res) => (req.protocol === 'http' ? 'ws://' : 'wss://')   req.get('host')],
    'manifest-src': ["'self'"],
    'worker-src': ["'self'"],
    'style-src': ["'self'"],
    'font-src': ["'self'"],
    'img-src': ["'self'", 'data:'],
    'base-uri': ["'self'"],
    'form-action': ["'self'"],
    'report-uri': '[REMOVED]'
  },
  reportOnly: true
}));
  

Это результирующий заголовок CSP:

 Content-Security-Policy-Report-Only: default-src 'none'; object-src 'none'; script-src 'self' 'nonce-[REMOVED]'; connect-src 'self' wss://MYSUBDOMAIN.MYDOMAIN.it; manifest-src 'self'; worker-src 'self'; style-src 'self'; font-src 'self'; img-src 'self' data:; base-uri 'self'; form-action 'self'; report-uri [REMOVED]
  

Это некоторые примеры отчетов:

 {
    "csp-report": {
        "document-uri": "https://MYSUBDOMAIN.MYDOMAIN.it/",
        "effective-directive": "worker-src",
        "original-policy": "default-src 'none'; object-src 'none'; script-src 'self' 'nonce-[removed]'; connect-src 'self' wss://MYSUBDOMAIN.MYDOMAIN.it; manifest-src 'self'; worker-src 'self'; style-src 'self'; font-src 'self'; img-src 'self' data:; base-uri 'self'; form-action 'self'; report-uri [REMOVED]",
        "blocked-uri": "https://MYSUBDOMAIN.MYDOMAIN.it/notification-worker.js",
        "line-number": 1,
        "column-number": 1966,
        "source-file": "https://MYSUBDOMAIN.MYDOMAIN.it/js/index.min.js"
    }
}
  
 {
    "csp-report": {
        "document-uri": "https://MYSUBDOMAIN.MYDOMAIN.it/results",
        "effective-directive": "img-src",
        "original-policy": "default-src 'none'; object-src 'none'; script-src 'self' 'nonce-[removed]'; connect-src 'self' wss://MYSUBDOMAIN.MYDOMAIN.it; manifest-src 'self'; worker-src 'self'; style-src 'self'; font-src 'self'; img-src 'self' data:; base-uri 'self'; form-action 'self'; report-uri [REMOVED]",
        "blocked-uri": "https://MYSUBDOMAIN.MYDOMAIN.it/img/icon_twitter_black.png",
        "line-number": 82
    }
}
  
 {
    "csp-report": {
        "document-uri": "https://MYSUBDOMAIN.MYDOMAIN.it/results",
        "effective-directive": "style-src-elem",
        "original-policy": "default-src 'none'; object-src 'none'; script-src 'self' 'nonce-[removed]'; connect-src 'self' wss://MYSUBDOMAIN.MYDOMAIN.it; manifest-src 'self'; worker-src 'self'; style-src 'self'; font-src 'self'; img-src 'self' data:; base-uri 'self'; form-action 'self'; report-uri [REMOVED]",
        "blocked-uri": "https://MYSUBDOMAIN.MYDOMAIN.it/css/results.min.css",
        "line-number": 8
    }
}
  

Существует около десяти похожих отчетов (разные изображения и файлы css, но идентичная структура отчета), и все они пришли из Chrome на Android.

Я не понимаю, почему были отправлены все эти отчеты: в каждом случае соответствующая политика включала ключевое слово ‘self’.

Я упускаю что-то очевидное?

Комментарии:

1. Находится ли весь сайт (и все ресурсы) на одном поддомене?

2. Да, все находится на одном поддомене

3. Может быть, это и старая конфигурация CSP, возвращаемая кэшированным HTML-документом, возможно?