拒绝加载图像 'https://res.cloudinary.com/.. violngecurity Policy directive: "img-src 'self' data:&quo

Posted

技术标签:

【中文标题】拒绝加载图像 \'https://res.cloudinary.com/.. violngecurity Policy directive: "img-src \'self\' data:"【英文标题】:Refused to load the image 'https://res.cloudinary.com/.. violngecurity Policy directive: "img-src 'self' data:"拒绝加载图像 'https://res.cloudinary.com/.. violngecurity Policy directive: "img-src 'self' data:" 【发布时间】:2021-05-30 22:51:48 【问题描述】:

iam 使用 vue.js 和 node.js,我在 cloudinary 中上传照片,当我在 heroku 上上传网站时,它运行良好,但出现图像错误,我尝试了很多方法来解决,但它不起作用 那是错误

Refused to load the image 'https://res.cloudinary.com/ammarleejot/image/upload/v1609954985/j7v7ezyvnax9fuokrryb.jpg' because it violates the following Content Security Policy directive: "img-src 'self' data:".

这是我尝试使用的元标记

 <meta charset="utf-8">
    <meta http-equiv="Content-Security-Policy"
    content="default-src *  data: blob: filesystem: about: ws: wss: 'unsafe-inline' 'unsafe-eval' 'unsafe-dynamic'; script-src * data: blob: 'unsafe-inline' 'unsafe-eval'; connect-src * data: blob: 'unsafe-inline'; img-src * data: blob: 'unsafe-inline'; frame-src * data: blob: ; style-src * data: blob: 'unsafe-inline'; font-src * data: blob: 'unsafe-inline';">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">

default-src * 'unsafe-inline' 'unsafe-eval'; script-src * 'unsafe-inline' 'unsafe-eval'; connect-src * '不安全的内联'; img-src * 数据:blob:'unsafe-inline';帧源*; style-src * 'unsafe-inline';

and when i check my website on https://csper.io/evaluations/603cd4e5b55c2090fdd9fb4a
it show me that result 

default-src 'self'
base-uri 'self'
block-all-mixed-content
font-src 'self' data: https:
frame-ancestors 'self'
img-src 'self' data:
object-src 'none'
script-src 'self'
script-src-attr 'none'
style-src 'self' 'unsafe-inline' https:
upgrade-insecure-requests

【问题讨论】:

【参考方案1】:

您在 HTTP 标头中发布了 CSP,可能通过 Helmet 中间件。 如果您想使用&lt;meta Content Security Policy&gt; 标签,请在helmet.contentSecurityPolicy(options) 中禁用它。 或者在 Helmet 中配置 CSP 头。

如果同时有两个内容安全政策,则将适用更严格的政策。

顺便说一句:

'unsafe-dynamic' 是不正确的令牌 connect-src/img-src/font-src 指令不支持'unsafe-inline' 令牌。

【讨论】:

谢谢你,太好了,我做错了,就像你说的那样使用 helmt,我像 app.use(hamlet( contentSecurityPolicy: false, )) 那样编辑了它,它现在可以工作了 是的,你能告诉我如何投票,因为我不知道 @AjeetShah 谢谢你,我真的很感激你,我没有使用它的经验,所以我还在学习【参考方案2】:

我在评论中看到您已通过将 contentSecurityPolicy 设置为 false 来解决,这样您就禁用了 CSP,我认为这不是您想要的...

如果您想授予对该特定域的访问权限,您应该将其添加到 img-src 下的头盔指令中,就像这样

helmet.contentSecurityPolicy(
        directives: 
            "default-src":[ "'self'" ],
            "base-uri":[ "'self'" ],
            "font-src":[ "'self'", "https:", "data:" ],
            "frame-ancestors":[ "'self'" ],
            "img-src":[ "'self'", "data:", "http://res.cloudinary.com"], <--- HERE
            "script-src":[ "'self'" ],
            "script-src-attr":[ "'none'" ],
            "style-src":[ "'self'", "https:", "'unsafe-inline'" ],
        
    );

您可以在此处添加或删除,具体取决于您要允许的内容。

这取决于您的应用程序,但通常最好启用 CSP 以防止大量攻击。

【讨论】:

以上是关于拒绝加载图像 'https://res.cloudinary.com/.. violngecurity Policy directive: "img-src 'self' data:&quo的主要内容,如果未能解决你的问题,请参考以下文章

THREE.js:跨域资源共享策略拒绝跨域图像加载

无法在重新加载页面上获取 /login Angular 8 - 拒绝加载图像“/favicon.ico”,因为它违反了以下内容安全策略

拒绝加载图像 'https://res.cloudinary.com/.. violngecurity Policy directive: "img-src 'self' data:&quo

chrome 扩展中的“拒绝加载脚本”错误

HTML <img src> 不会加载我的图片

libmpc - dyld:库未加载 - 原因:找不到图像