嘿,所以我想建立一个网站,但遇到一个问题: 当我通过以某种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" />
或其他人在其他帖子上所说的它的变体,但它似乎不起作用。
默认情况下导入的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个小时以来我一直在寻找解决方案。