我在下面的index.html文件中有一个 Angular 应用程序

考虑在我的index.html页面中,我具有以下SRI(SubResource完整性)代码

<html>
<head>
<meta http-equiv="Content-Security-Policy"
      content="script-src 'self' scripts/alert.js 'unsafe-inline' 'unsafe-eval' 'sha256-qznLcsROx4GACP2dm0UCKCzCG+HiZ1guq6ZZDob/Tng='">

<script src="scripts/alert.js"
        integrity="sha256-qznLcsROx4GACP2dm0UCKCzCG+HiZ1guq6ZZDob/Tng="
        crossorigin="anonymous"></script>
</head>
</html>



如果我使用的是要求JS,则必须将“alert.js”的脚本包含移动到“main.js”文件中,如下所示

require.config({


    // alias libraries paths
    paths: {
            'jquery': '/scripts/alert'
            },
    // kick start application
    deps: ['../app/require.bootstrap']
 })


有人可以帮助我如何在路径中引用alert.js脚本时将完整性属性包括到main.js文件中。

最佳答案

如果我正确理解了您的问题,则希望对通过require js引用的脚本使用Sub Resource Integrity。请注意,为此,您需要RequireJS 2.1.19或更高版本(请参阅http://requirejs.org/docs/download.html)。

有关工作示例(引用jQuery),请参见以下代码:http://plnkr.co/edit/kzqLjUThJRtoEruCCtMt?p=preview。希望您应该能够将此方法复制到您的项目中。

我的示例将完整性/跨域属性用于:

  • RequireJS本身(通过index.html文件)
  • jQuery(通过配置文件main.js和您感兴趣的东西)

  • 这是建立在RequireJS钩子(Hook)onNodeCreated和类似以下代码的基础上的
    onNodeCreated: function(node, config, module, path) {
        node.setAttribute('integrity', integrityForModule);
        node.setAttribute('crossorigin', 'anonymous');
    }
    

    请注意,此示例未将SRI用于配置文件main.js文件。为了实现这一目标,
  • index.html
  • 中包括RequireJS配置内联
  • ...或通过额外的脚本标签(具有完整性/交叉)而不是通过main.js属性
  • 来引用data-main(配置文件)

    关于angularjs - 使用Require JS的angularJS应用程序中的子资源完整性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34348536/

    10-12 23:25