Наверное, одним из универсальных вариантов будет использование прокси-сервера, который вам поможет обойти заголовки CSP путем маршрутизации запросов через сервер, где эти заголовки могут быть изменены.
На node.js он разворачивается довольно просто:
const http = require('http');
const httpProxy = require('http-proxy');
const proxy = httpProxy.createProxyServer({});
http.createServer(function(req, res) {
proxy.web(req, res, {
target: 'https://game-analytics.ru',
changeOrigin: true,
selfHandleResponse: true
});
proxy.on('proxyRes', function(proxyRes, req, res) {
let body = [];
proxyRes.on('data', function(chunk) {
body.push(chunk);
});
proxyRes.on('end', function() {
body = Buffer.concat(body);
res.setHeader('Content-Security-Policy', '');
res.writeHead(proxyRes.statusCode, proxyRes.headers);
res.end(body);
});
});
}).listen(3000, () => {
console.log('Прокси-сервер запущен на порту 3000');
});
В вашем коде используйте прокси-адрес при создании iframe окна:
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Создание Iframe через JavaScript</title>
</head>
<body>
<div id="iframe-container"></div>
<script>
document.addEventListener('DOMContentLoaded', function() {
const iframe = document.createElement('iframe');
iframe.setAttribute('src', 'http://localhost:3000');
document.getElementById('iframe-container').appendChild(iframe);
});
</script>
</body>
</html>