微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

拒绝在 node.js 应用程序中加载样式表/脚本

如何解决拒绝在 node.js 应用程序中加载样式表/脚本

所以基本上我在尝试从 https://fonts.googleapis.com/css?family=Merriweather:400,700&display=swap 加载一些字体时遇到了问题,

我在运行应用程序时收到几条错误消息

localhost/:1 拒绝加载样式表 'https://fonts.googleapis.com/css?family=Montserrat:400,500,600,700&display=swap' 因为它违反了以下内容安全策略指令:“default-src 'self '”。请注意,'style-src-elem' 未明确设置,因此使用 'default-src' 作为后备。

localhost/:1 拒绝加载样式表 'https://fonts.googleapis.com/css?family=Montserrat:400,700&display=swap' 因为它违反了以下内容安全策略指令: “style-src 'self' 'unsafe-inline'”。请注意,'style-src-elem' 不是 显式设置,因此“style-src”用作后备。

localhost/:1 拒绝加载样式表 'https://fonts.googleapis.com/css?family=Merriweather:400,700&display=swap' 因为它违反了以下内容安全策略指令: “认-src '自我'”。请注意,'style-src-elem' 没有明确 设置,所以 'default-src' 用作后备。

localhost/:1 拒绝加载样式表 'https://fonts.googleapis.com/css?family=Merriweather:400,700&display=swap' 因为它违反了以下内容安全策略指令: “style-src 'self' 'unsafe-inline'”。请注意,'style-src-elem' 不是 显式设置,因此“style-src”用作后备。

我也试图为我的项目实现 Stripe,但我也无法加载脚本,我收到了相同的错误消息

localhost/:1 拒绝加载脚本“https://js.stripe.com/v3”,因为它违反了以下内容安全策略指令:“script-src 'self'”。请注意,'script-src-elem' 未明确设置,因此使用 'script-src' 作为后备。

我对元标记中的 CSP 一无所知

这是我拥有的但我认为不起作用

Meta(http-equiv='Content-Security-Policy' content="default-src 'self'")   
Meta(http-equiv='Content-Security-Policy' content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' http://www.google.com")   
Meta(http-equiv='Content-Security-Policy' content="style-src 'self' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com;")

我的应用程序上还安装了helm.js模块,配置如下

app.use(helmet());

解决方法

我的应用程序上还安装了helm.js模块,配置如下

app.use(helmet());

Helmet V4 使用 HTTP 标头发布 default CSP。这就是您的外部来源被阻止的原因。
您无法通过在 <meta> 标记中添加第二个 CSP 来缓解一个 CSP,因为多个 CSP 用作一致的过滤器:所有源都必须通过所有 CSP。

您可以禁用 Helmet 中间件:

// This disables the `contentSecurityPolicy` middleware but keeps the rest.
app.use(
   helmet({
     contentSecurityPolicy: false,})
 );

然后使用元标记 CSP 代替它。

或者您可以在 helmet.contentSecurityPolicy(options) 中将阻止的源添加到 Helmet CSP 设置中。

,

前段时间我也遇到过这个问题。然后我检查了 https://content-security-policy.com/examples/express-js/ 并在响应对象中添加了 CSP 标头。它工作得很好

var express = require('express');
var application = express();

application.use(function(req,res,next) {
    res.setHeader("Content-Security-Policy","script-src 'self' https://fonts.googleapis.com");
    return next();
});

application.use(express.static(__dirname + '/'));

application.listen(process.env.PORT || 9000);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?