- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试将现有的 Web 应用程序移植到 Windows Phone 8.1(以及更高版本的 Windows 8.1)。这不是静态内容,这是一个具有大量客户端功能的动态页面。
我的 default.html
文件有 <iframe src="https://remote.example.com/app.html"></iframe>
.
iframe 中的内容在模拟器中有效,并且在初始 HTML 中直接引用的资源似乎有效。但是,我的网络应用程序却触发了几个这样的错误:
SEC7117: Network request to https://cdn.remote.example.com/extra.js did not succeed. Your application manifest does not declare the following capabilities: 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 错误?我试过使用 <x-ms-webview></x-ms-webview>
元素而不是 iframe,但随后许多 Web 平台 API(例如 HTML5 GeoLocation)停止工作,并且 Microsoft 自己的指南似乎将 MSWebView 用于静态内容。
为了安全起见,我真的希望我的网络应用程序在“网络上下文”中执行,并使用 postMessage
执行类似应用程序的事件(这部分正在运行)。通过像这样直接从主机获取内容,我可以更新 Windows Phone 应用程序的这一部分,而无需通过 Marketplace 推送更新。
有什么我想念的吗?我使用了错误的元素吗?其他人如何为 Windows Phone 8.1 包装现有的网络应用程序?
最佳答案
这很可能是由 iframe 安全模型引起的。
在 Features and restrictions by context该表列出了在 Web 上下文中禁用的跨域 XHR 请求(根据 Developing secure apps “由 iframe 加载的远程 Web 内容始终在 Web 上下文中加载”)。
如果您通过 XHR 加载内容,您将被阻止。
您可以研究方法,使用 postMessage 在本地上下文中获取数据,然后将其传回 Web 上下文。
关于javascript - 如何在 WinJS iframe 中加载远程内容同时避免 SEC7117 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24175312/
我正在开发一个需要能够平均三个数字的 Facebook 应用程序。但是,它总是返回 0 作为答案。这是我的代码: $y = 100; $n = 250; $m = 300; $number = ($y
我只是无法弄清楚这一点,也找不到任何对我来说有意义的类似问题。我的问题:我从数据库中提取记录,并在我的网页上以每个面板 12 条的倍数显示它们。因此,我需要知道有多少个面板可以使用 JavaScrip
我是一名优秀的程序员,十分优秀!