如何在Windows Universal应用程序中设置内容安全策略

seb*_*mez 7 javascript win-universal-app windows-10

我甚至都不知道这是不是我需要的,但是在这篇MSDN论坛发帖几天根本就没有答案,我想我会在SO中试一试.

我的问题:我有很多Windows 8.1和Windows Phone 8.1 HTML/Javascripts应用程序,每个html页面都有一个<script>句子<head>.我开始将我的应用程序迁移到Windows 10作为单个通用Windows应用程序,但是我收到以下错误:

CSP14312: Resource violated directive 'script-src ms-appx: data: 'unsafe-eval'' in Host Defined Policy: inline script. Resource will be blocked
Run Code Online (Sandbox Code Playgroud)

当然,什么都没有被执行......我错过了什么吗?

编辑:重新创建一个空白的Windows通用应用程序,使用VS2015 RC并添加

<script>
    console.log('hello');
</script>
Run Code Online (Sandbox Code Playgroud)

在head标签关闭之前

Kev*_*rce 5

Rob 说得对,默认情况下,您不能在ms-appx:///协议中使用内联脚本。这是应用程序的默认协议,并且具有不允许内联脚本的默认 CSP 策略。

如果您确实希望使用内联脚本,您可以通过ms-appx-web:///导航到内容协议导航到内容,其中没有默认的 CSP 策略。

需要注意的是,您无权访问该协议中的某些功能。

除了 Rob 所说的之外,我唯一的区别是您最有可能希望像这样设置应用程序内容 URI 规则 (ACUR)

<uap:ApplicationContentUriRules>
   <uap:Rule Type="include" Match ="ms-appx-web:///" WindowsRuntimeAccess="all"/>
</uap:ApplicationContentUriRules>
Run Code Online (Sandbox Code Playgroud)

要导航到您的内容,您可以将清单中的 StartPage 设置为ms-appx-web:///default.html

  • 该死的微软,从来没有让开发者的事情变得容易!难道你不能直接从其他人那里复制,例如使用sandboxig来开发像Android这样的应用程序吗?总是带着没人理解的新奇怪的安全模型和如此可怕的文档,然后每个人都以同样的方式闯入你的系统......无论如何,这个解决方案对我不起作用,并且相同的代码在 8.1 上运行没有问题。Cordova 应用程序,更新到 Win 10 后 VS 2015 中的通用应用程序解决方案。我总是得到 CSP14312 :/ (2认同)