所有 Iframe 内容和 CDN 不再工作
All Iframe content and CDN not working anymore
我的节点应用程序似乎阻止了所有 CDN 和 iframe 内容,例如,我的表没有加载数据表的东西(比如排序和搜索),我的图表也没有工作。他们之前都在工作,我最后修改的是包更新和节点更新似乎与问题无关。我想知道可能发生了什么以及如何解决它。
如果问题不是这样,我很抱歉objective但我真的不知道从哪里开始。
问题
记录并帮助可能遇到同样问题的其他人。根据 CBroe 的评论,我发现问题是我没有设置 Content Security Policy (CSP),浏览器设置了自己的策略,阻止了外部资源(CDN 和 Iframe)内容)。浏览器控制台中显示提及内容安全策略的错误消息。
解决方案
为了解决这个问题,我在 server.js 上添加了一个中间件来设置一个不会阻止我的外部内容的 CSP。
非常宽松的 CSP 中间件示例(我建议您使用限制性更强的中间件):
app.use(function(req, res, next) {
res.setHeader(
"Content-Security-Policy",
"default-src * 'unsafe-inline' 'unsafe-eval'; script-src * 'unsafe-inline' 'unsafe-eval'; connect-src * 'unsafe-inline'; img-src * data: blob: 'unsafe-inline'; frame-src *; style-src * 'unsafe-inline';"
);
return next();
});
我的节点应用程序似乎阻止了所有 CDN 和 iframe 内容,例如,我的表没有加载数据表的东西(比如排序和搜索),我的图表也没有工作。他们之前都在工作,我最后修改的是包更新和节点更新似乎与问题无关。我想知道可能发生了什么以及如何解决它。
如果问题不是这样,我很抱歉objective但我真的不知道从哪里开始。
问题
记录并帮助可能遇到同样问题的其他人。根据 CBroe 的评论,我发现问题是我没有设置 Content Security Policy (CSP),浏览器设置了自己的策略,阻止了外部资源(CDN 和 Iframe)内容)。浏览器控制台中显示提及内容安全策略的错误消息。
解决方案
为了解决这个问题,我在 server.js 上添加了一个中间件来设置一个不会阻止我的外部内容的 CSP。
非常宽松的 CSP 中间件示例(我建议您使用限制性更强的中间件):
app.use(function(req, res, next) {
res.setHeader(
"Content-Security-Policy",
"default-src * 'unsafe-inline' 'unsafe-eval'; script-src * 'unsafe-inline' 'unsafe-eval'; connect-src * 'unsafe-inline'; img-src * data: blob: 'unsafe-inline'; frame-src *; style-src * 'unsafe-inline';"
);
return next();
});