拒绝加载图像'http://localhost:8080/favicon.ico'因为它违反了



我正在开发一个Javascript应用程序美食2。但当AJAX调用API承诺实现并呈现结果(Recipes(时,我得到了一个错误。但当我点击其中一个时,它会移动到下一页,并说

无法获取/44746

并在控制台上给出错误

拒绝加载图像'http://localhost:8080/favicon.ico',因为它违反了以下内容安全策略指令:"default src'none'"。请注意,没有显式设置"img src",因此使用"default src"作为后备选项

如何消除这种错误?

这是因为内容安全策略(CSP(标头设置在应用程序中的某个位置。

内容安全策略(CSP(是一个添加的安全层,有助于检测和减轻某些类型的攻击,包括跨站点攻击脚本(XSS(和数据注入攻击。/…/

兼容CSP的浏览器将只执行加载在从允许列出的域接收的源文件,忽略所有其他脚本(包括内联脚本和事件处理HTML属性(。

作为一种终极保护形式要执行的脚本可以选择全局禁止脚本执行[edit:因此使用"默认src'none'"策略]

有关CSP的更多信息:https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP

您可以使用在线工具创建CSP,如

  • https://report-uri.com/home/generate

  • https://www.cspisawesome.com

带有"default-src 'none'"的CSP意味着任何内容都不能在您的域上显示/运行-您必须将允许的服务/内容"列入白名单"(默认src是其他没有自己策略的资源类型的后备,因此您将其设置为none,然后您必须添加明确允许的源(。

使用一系列策略指令来描述策略,每个指令其描述用于某一资源类型或策略区域的策略。

你能做什么

在你的情况下,你可能需要一个类似的政策:

"default-src 'none'; img-src 'self'"

不过,我很确定,随着你的发展,你将需要更多的规则,所以请查看来源和在线CSP生成器,这样你就不会遇到困难。

或者您可以

  1. 删除CSP(不建议-这是一种安全措施(

  2. 出于开发目的,您可以设置Content-Security-Policy-Report-Only(这样,CSP不会停止显示/运行您的内容,而是显示"如果不设置为仅报告问题,会做什么"。不要忘记在生产环境中处理此问题!(

参考

  • CSP参考:https://content-security-policy.com

  • 有关CSP的更多信息:https://scotthelme.co.uk/content-security-policy-an-introduction/

相关内容

最新更新