angularjs - 无法加载图像,因为它违反了内容安全策略

标签 angularjs google-chrome-app content-security-policy

在 Chrome 应用程序中,我尝试从外部链接加载图像,但出现错误

Refused to load the image 'unsafe:https://www.google.co.in/images/srpr/logo11w.png' because it violates the following Content Security Policy directive: "img-src 'self' blob: filesystem: data: chrome-extension-resource:

我已经在manifest.json文件中添加了content_security_policy

"content_security_policy": "img-src 'self' https://www.google.co.in/ blob: filesystem: data: chrome-extension-resource:;"

还使用正则表达式将 URL 协议(protocol)显式添加到 Angular 的白名单

.config(['$compileProvider',
    function ($compileProvider) {
        var currentImgSrcSanitizationWhitelist = $compileProvider.imgSrcSanitizationWhitelist();
        var newImgSrcSanitizationWhiteList = currentImgSrcSanitizationWhitelist.toString().slice(0, -1)
        + '|chrome-extension:'
        + currentImgSrcSanitizationWhitelist.toString().slice(-1);

        console.log("Changing imgSrcSanitizationWhiteList from " + currentImgSrcSanitizationWhitelist + " to " + newImgSrcSanitizationWhiteList);
        $compileProvider.imgSrcSanitizationWhitelist(newImgSrcSanitizationWhiteList);
    }
        ]);

但仍然存在错误。

最佳答案

不能覆盖 CSP for Chrome Apps (该 key 仅适用于扩展)。

您需要调整您的应用程序以获取然后在本地缓存图像 - 您不能直接嵌入它们。请参阅 Google 指南 Referencing external resources .

另外,再看看this question - 如果您的网址中出现unsafe:,则表示您的做法不正确。

关于angularjs - 无法加载图像,因为它违反了内容安全策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37159179/

相关文章:

angularjs - 从 http 响应中以 Angular 保存文件

angularjs - UI-Router 在页面刷新时给出无法获取错误

javascript - HTML/CSS 使图像容器与旁边的容器大小相同

android - 为 Android 创建移动 Chrome 应用程序时找不到模拟器图像

javascript - 如何在 Chrome 打包应用程序的 list 中使用 "system_indicator"?

javascript - chrome.api* 方法来知道标签是否有音频

ios - Ionic v1 应用程序在 ipad 中无法正常工作,但它可以在其他设备上运行

html - http-equiv 值 'Content-Security-Policy' 到底有什么作用?

javascript - 内容安全策略是否阻止书签?

content-security-policy - 由于内容安全政策,Adsense 有时不转换广告