拒绝加载字体“ <URL>”,因为它违反了以下内容安全策略指令

时间:2020-08-12 22:02:51

标签: javascript html css express

嘿,所以我想建立一个网站,但遇到一个问题: 当我通过以某种url格式执行get请求时将其发送给客户端时,将我的html文件加载到express中时,会出现以下错误:

Refused to load the font '<URL>' because it violates the following Content Security Policy directive: "default-src 'none'". Note that 'font-src' was not explicitly set, so 'default-src' is used as a fallback.

如果我手动(在没有服务器的情况下)打开html文件,则不会出现此错误,并且当我尝试使用@import url('https://fonts.googleapis.com/...');从url导入字体时会出现相同类型的错误,但是如果我通过下载将其导入。

最奇怪的是,我的首页html文件没有出现错误,该文件链接到相同的css文件,并且与另一个非常相似。

我尝试添加此内容:

<meta http-equiv="Content-Security-Policy" content="font-src 'self' data:; img-src 'self' data:; default-src 'self'">

<meta http-equiv="Content-Security-Policy" content="default-src 'self'; font-src fonts.gstatic.com; style-src 'self' fonts.googleapis.com" />

或其他人在其他帖子上所说的它的变体,但它似乎不起作用。

这是完整的堆栈跟踪: enter image description here

默认情况下导入的Open Sans似乎是个问题。

我尝试过使用Chrome,Firefox,Brave,Opera等多种浏览器,但它们均返回相同的错误。

这是我所讨论文件的HTML代码:

<!DOCTYPE html>

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta http-equiv="Content-Security-Policy" content="default-src 'self'; font-src data:" />
    <title>Test</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" href="style.css">
</head>

<body>
    ...

</body>

</html>

这是我的Express路线:

router.get('/[a-zA-Z0-9]{5}', (req, res) => {
    res.sendFile('../public/test.html', { root: __dirname })
})

请注意,我也有发送主页html文件的主页路由,它可以正常工作:

app.get('/', (req, res) => {
    res.sendFile('/public/index.html', { root: __dirname })
})

并且html文件甚至没有Content-Security-Policy元标记。

因此,如果有人能够提供帮助,那将是真正的国王,因为大约5个小时以来我一直在寻找解决方案。

0 个答案:

没有答案