【问题标题】:How can I load remote content in a WinJS iframe whilst avoiding SEC7117 errors?如何在 WinJS iframe 中加载远程内容,同时避免 SEC7117 错误?
【发布时间】:2014-08-02 05:48:19
【问题描述】:

我正在尝试将现有的 Web 应用程序移植到 Windows Phone 8.1(以及更高版本的 Windows 8.1)。这不是静态内容,而是具有大量客户端功能的动态页面。

我的default.html 文件有<iframe src="https://remote.example.com/app.html"></iframe>

iframe 中的内容在模拟器中有效,而在初始 HTML 中直接引用的资源似乎也有效。但是,我的网络应用程序却触发了几个这样的错误:

SEC7117:对https://cdn.remote.example.com/extra.js 的网络请求未成功。 您的应用程序清单未声明以下功能:internetClient privateNetworkClientServer

https://cdnjs.cloudflare.com/... 和 https://example.cloudfront.net/... 出现类似错误

模拟器只是好心,一旦应用在真实设备上运行,这些资源将根本无法使用。

我的package.appxmanifest 文件包括以下内容:

  <ApplicationContentUriRules>
    <Rule Match="https://remote.example.com/" Type="include" />
    <Rule Match="https://cdnjs.cloudflare.com/" Type="include" />
    <Rule Match="https://example.cloudfront.net/" Type="include" />
    <Rule Match="https://cdn.remote.example.com/" Type="include" />
  </ApplicationContentUriRules>
...
<Capabilities>
  <Capability Name="internetClientServer" />
  <Capability Name="picturesLibrary" />
  <Capability Name="internetClient" />
  <Capability Name="privateNetworkClientServer" />
  <DeviceCapability Name="location" />
  <DeviceCapability Name="webcam" />
</Capabilities>

为什么会发生这些 SEC7117 错误?我尝试使用 &lt;x-ms-webview&gt;&lt;/x-ms-webview&gt; 元素而不是 iframe,但随后许多 Web 平台 API(例如 HTML5 GeoLocation)停止工作,并且 Microsoft 自己的指南似乎使用 MSWebView 处理静态内容。

出于安全目的,我真的希望我的网络应用程序在“网络上下文”中执行,并使用postMessage 来执行类似应用程序的活动(这部分正在工作)。通过像这样直接从主机获取内容,我可以更新 Windows Phone 应用程序的这一部分,而无需通过 Marketplace 推送更新。

我有什么遗漏吗?我使用了错误的元素吗?其他人如何为 Windows Phone 8.1 打包现有的 Web 应用程序?

【问题讨论】:

  • 我也尝试过将跨域脚本源放在ApplicationContentUriRules 中,但没有成功。

标签: javascript html windows-8.1 winjs windows-phone-8.1


【解决方案1】:

这很可能是由 iframe 安全模型引起的。

Features and restrictions by context,该表将跨域 XHR 请求列为在 Web 上下文中被禁用(根据Developing secure apps“由 iframe 加载的远程 Web 内容始终在 Web 上下文中加载”)。

如果您通过 XHR 加载内容,您将被阻止。

您可以调查方法,使用 postMessage 在本地上下文中获取数据,然后将其传递回 Web 上下文。

【讨论】:

    猜你喜欢
    • 2013-09-09
    • 2011-07-21
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 2014-04-22
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多