Chrome 中的 Css 内联样式错误:“拒绝应用内联样式,因为它违反了以下内容安全策略指令……”

Posted

技术标签:

【中文标题】Chrome 中的 Css 内联样式错误:“拒绝应用内联样式,因为它违反了以下内容安全策略指令……”【英文标题】:Css inline style error in Chrome: "Refused to apply inline style because it violates the following Content Security Policy directive..." 【发布时间】:2020-12-21 19:20:36 【问题描述】:

我有以下html页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
    <head>
        <meta charset="utf-8"/>
        <meta http-equiv="X-UA-Compatible" content="IE=11"/>
        <meta http-equiv="Cache-Control" content="no-cache"/>
        <meta http-equiv="Content-Security-Policy" content="default-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';"/>
        <title>
        </title>
    </head>

    <style>
            .container 
                display: flex;
                display: -webkit-flex;
                justify-content: center;
            

            .label 
                font-size: 20px;
                text-align: center;
            

    </style>

    <body>
        <div class="container">
            <div class="label">Label content.</div>
        </div>
    </body>
</html>

尽管带有“unsafe-inline”的“Content-Security-Policy”标签没有应用样式,我在 Chrome 中看到以下错误:

"拒绝应用内联样式,因为它违反了以下内容 内容安全策略指令:“default-src 'self'”。无论是 'unsafe-inline' 关键字,一个哈希 ('sha256-daGc4DKtFpvn1iqhVz5mJJ4bXSwDGTnQKoxHdrHVEhc='),或随机数 ('nonce-...') 是启用内联执行所必需的。另请注意 'style-src' 没有明确设置,所以 'default-src' 被用作 后备。”

可以做些什么来解决这个问题?

【问题讨论】:

我复制了您的代码并将其粘贴到一个新的 html 文档中,它对我来说工作正常。 【参考方案1】:

这可能是因为 HTML 中定义的 CSP 与您的 Web 服务器设置中的 CSP 不同。对于 Apache,它位于文件“.htaccess”中。

但是,如果您添加具有全局“unsafe-inline”和“unsafe-eval”的 CSP,则根本没有安全性,并且 CSP 变得有点无用。

此外,考虑为 HTML 和 CSS 创建不同的文件,并在需要时导入样式。

【讨论】:

以上是关于Chrome 中的 Css 内联样式错误:“拒绝应用内联样式,因为它违反了以下内容安全策略指令……”的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Chrome 检查器中的 CSS 规则显示为灰色 [重复]

React 中的内联 CSS 样式:如何实现 a:hover?

Chrome shadow-root 应用奇怪的 CSS 规则

Django 模板中的动态内联 CSS 样式

CSS中的权重

如何在地图函数中使用 JSX 中的变量更改内联 CSS 样式?