Целостность подресурсов в приложении angularJS, которое использует Require JS

У меня есть угловое приложение с файлом index.html ниже

Учтите, что на моей странице index.html у меня есть следующий код для SRI (SubResource Integrity)

<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>

In case, if I am using require JS, then I have to move the script inclusion of 'alert.js' to 'main.js' file as below

require.config({


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

Может ли кто-нибудь помочь мне, как включить атрибут целостности в файл main.js, ссылаясь на сценарий alert.js в путях.


person riyas nawab    schedule 18.12.2015    source источник


Ответы (1)


Если я правильно понимаю ваш вопрос, вы хотите использовать Sub Resource Integrity для скриптов, на которые ссылается require js. Обратите внимание, что для этого вам потребуется 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 onNodeCreated и коде вроде

onNodeCreated: function(node, config, module, path) {
    node.setAttribute('integrity', integrityForModule);
    node.setAttribute('crossorigin', 'anonymous');
}

Обратите внимание, что в этом примере НЕ используется SRI для файла конфигурации main.js. Чтобы добиться этого, либо

  • включить встроенную конфигурацию RequireJS на странице index.html
  • ...или ссылаться на main.js (файл конфигурации) через дополнительный тег скрипта (с целостностью/кроссовером), а не через атрибут data-main
person staeke    schedule 06.05.2016