/ / Не мога да стартирам приложението Aurelia без eval () - javascript, aurelia, systemjs

Не може да се стартира приложението Aurelia без eval () - javascript, aurelia, systemjs

Имам работещо уеб приложение Aurelia SPA, но ако настроя в моя web.config опцията Content-Security-Policy като тази

<add name="X-Content-Security-Policy" value="default-src "none"; frame-src "self"; script-src "self" https://code.jquery.com; connect-src "self" https://*.core.windows.net; img-src "self" data:; style-src "self" https://fonts.googleapis.com "unsafe-inline"; font-src https://fonts.gstatic.com "self";"></add>

Получавам тази грешка при зареждане на страницата

Uncaught (in promise) Error: (SystemJS) Refused to evaluate a string as JavaScript because "unsafe-eval" is not an allowed source of script in the following Content Security Policy directive: "script-src "self" https://code.jquery.com".

Заредих страницата сега с помощта на неразделната версия и грешката, която получавам е

EvalError: Refused to evaluate a string as JavaScript because "unsafe-eval" is not an allowed source of script in the following Content Security Policy directive: "script-src "unsafe-inline" "self" https://code.jquery.com".

Evaluating https://localhost/jspm_packages/npm/aurelia-bootstrapper@1.0.0.js
Error loading https://localhost/jspm_packages/npm/aurelia-bootstrapper@1.0.0.js

междувременно ще проуча допълнително товарача на модул SystemJS.

UPDATE

Грешката наистина се случва в модула SystemJSтоварач, защото в system.src.js използва eval (плюс няколко дефиниции на "нова функция", но аз не идвам в тези редове от код. Моят въпрос би бил следният: няма ли начин да се заобиколи това, освен да изключите политиката за защита на съдържанието (или да позволите „опасен-eval“)?

Отговори:

2 за отговор № 1

Aurelia напълно поддържа Политиката за сигурност на съдържанието. Ако използвате SystemJS, трябва да направите следните промени в index.html, в сравнение с извадката за започване на работа, намерена в Документация на Aurelia:

Използвайте CSP съвместим производство изграждане на SystemJS:

<script src="scripts/system-csp-production.js"></script>

Имайте предвид, че използвайки CSP версията на SystemJS, можете само пускане в пакет или то няма да работи, Вероятно искате да използвате линията по-горе само в производството.

Създайте файл bootstrap.js със следното съдържание:

System.import("aurelia-bootstrapper");

и заменете същото, вградено обаждане в index.html със следния ред:

<script src="scripts/bootstrap.js"></script>

Тук е важен въпрос за проекта Aurelia.