Получение ресурса с ошибкой нарушило директиву ‘script-src ms-appx: ‘unsafe-eval» в политике, определенной хостом: встроенный скрипт. Ресурс будет заблокирован

#javascript #html #visual-studio

#javascript #HTML #visual-studio

Вопрос:

Я пытаюсь использовать Visual Studio для создания универсального приложения для Windows. Когда я пытаюсь запустить следующий код:

 <!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>testProject</title>
    <link href="css/default.css" rel="stylesheet" />
</head>
<body>
    <div>Content goes here!</div><script src="js/main.js"></script>
    <form name="myForm">

           <input type="radio" name="myRadio" value="yes"/>  Yes <br />
           <input type="radio" name="myRadio" value="No"/> No <br />
           <input type="button" name="submit"value="submit" onsubmit="return validateForm" />
    </form>
</body>
</html>
 

В главном файле JavaScript:

 function ValiditeForm(){

    document.writeln("Hello World");
}
 

При попытке запуска я получаю следующее предупреждение:

CSP14312: Ресурс нарушил директиву ‘script-src ms-appx: ‘unsafe-eval» в политике, определенной хостом: встроенный скрипт. Ресурс будет заблокирован.

Все, что я просто пытаюсь сделать, это написать HTML-код с помощью приложения Visual studio universal, который при нажатии пользователем переключателя в форме HTML будет передан функции в JavaScript и выведет значение.

Ответ №1:

Это происходит из-за политики безопасности контента

Из MDN:

Заголовок ответа HTTP Content-Security-Policy позволяет администраторам веб-сайта управлять ресурсами, которые пользовательскому агенту разрешено загружать для данной страницы. За некоторыми исключениями, политики в основном включают указание источников сервера и конечных точек скрипта. Это помогает защититься от межсайтовых скриптовых атак (XSS).

Ваш сервер отправляет Content-Security-Policy HTTP-заголовок, который не позволяет вашему браузеру доверять вашему файлу javascript.

Вы можете изменить заголовок CSP, чтобы вы могли встроить <script> , если ваш сервер IIS, найдите HTTP Response heathers опцию на inetmgr.exe

inetmgr

при удалении unsafe-eval из вашей конфигурации все готово.

unsafe-eval

И это нормально для разработки, но не для производственных сред. В Интернете есть несколько полезных утилит, которые могут помочь вам сгенерировать действительный CSP для определенных файлов. Например, Google для «генератора заголовков CSP».

Ответ №2:

Исправьте все остальные синтаксические ошибки. Отключите сообщение об ошибке, которое вы получаете во время работы программы («x» в верхней части окна вывода ошибки). Завершите работу вашей программы. Закройте ваше решение. Выйдите из Visual Studio.

ПЕРЕИМЕНУЙТЕ папку вашего проекта. Откройте Visual Studio из новой папки. ПЕРЕСТРОЙТЕ свое решение. Теперь при отладке вы не увидите ошибок.

Комментарии:

1. Что вы делаете всеми этими шагами, так это создаете новый конфигурационный файл IISExpress для вашего приложения. Вы могли бы достичь тех же результатов, выполнив appcmd.exe list site /xml | appcmd delete site /in удаление всех конфигураций сайта, присутствующих в вашем экземпляре IISExpress. Будьте осторожны, если вы хотите сохранить какие-либо из них и удалить их один за другим. Закройте VS и снова откройте его, при следующем запуске проекта он воссоздаст конфигурацию сайта для вас.