错误:“请注意,'style-src-elem'未明确设置”,即使已设置

7

我和这个人有同样的问题,但我没有使用.NET,所以不知道如何解决这个问题。我正在使用Electron。

<head>
<meta http-equiv="Content-Security-Policy" content="style-src-elem 'self' https://fonts.googleapis.com">

<meta http-equiv="Content-Security-Policy" content="font-src https://fonts.gstatic.com">

<meta http-equiv="Content-Security-Policy" content="default-src 'self'">

<meta charset="UTF-8">

<link rel="preconnect" href="https://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300&display=swap" rel="stylesheet">

<link rel="stylesheet" href="index.css">
</head>

这里是错误信息:
拒绝加载样式表'https://fonts.googleapis.com/css2?family=Poppins:wght@300&display=swap',因为它违反了以下内容安全策略指令:"default-src 'self'"。请注意,未明确设置'style-src-elem',因此将使用'default-src'作为回退。
问题在于,'style-src-elem'已经被明确设置,但我不知道发生了什么。请帮忙解决。
1个回答

6

没事了,我已经想通了!我原以为可以为了可读性将 <meta> 标签分开,但事实证明并非如此。每个 <meta> 标签都会覆盖之前的标签,最后只有最后一个 content="default-src 'self'"<meta> 标签才能被检查到。以下是解决类似问题的工作代码:

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

    <meta charset="UTF-8">



    <link rel="preconnect" href="https://fonts.gstatic.com">
    <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300&display=swap" rel="stylesheet">

    <link rel="stylesheet" href="index.css">
</head>


2
是的,多个元标记意味着多个CSPs,它们以一种棘手的方式工作。但您仍然会遇到错误“Refused to load the stylesheet 'https://fonts.googleapis.com...”,请在Firefox或Safari中查看。您必须将内容从`style-src-elem`复制到`style-src`,因为某些浏览器不支持`style-src-elem`指令。 - granty
1
@granty 可能需要在不同的浏览器上进行网页开发。在我的情况下,我正在开发一个electron程序。Electron仅在Chromium上运行,因此使用多个浏览器不应该成为问题。 - edwardscamera

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接