我有一个cordova应用程序(SPA(,需要向本地网络资源发出XmlHttpRequest。
如果应用程序处于远程模式,则我无法/不允许定义必要的privateNetworkClientServer
功能(该应用程序在Windows应用商店中实际上被拒绝,因为我在启用远程模式时定义了此功能(。没有privateNetworkClientServer
,对本地网络的XmlHttpRequest就无法工作。
如果应用程序处于本地模式,我可以定义必要的privateNetworkClientServer
功能,但我也会收到很多错误/警告:
CSP14312: Resource violated directive 'script-src ms-appx: data: 'unsafe-eval'' in Host Defined Policy: inline script. Resource will be blocked
这可能是因为我使用jQuery来动态创建/更新应用程序内容,比如$("#myelement"(.html(…(?
所以我有点被困在这里了。在这两种模式下,我都面临着问题。
是否有任何方法可以在不定义privateNetworkClientServer功能的情况下向本地网络资源发出XmlHttpRequest?有没有其他方法可以创建与本地模式兼容的单页应用程序?
应该是内容安全策略导致了这个问题,请参阅connect-src文档,
HTTP内容安全策略(CSP(connect-src指令限制可以使用脚本接口加载的URL。
您可以尝试将本地网络URL添加到index.html
文件的第一个元Content-Security-Policy
内容中的connect-src
资源指令中。作为以下代码,您可以将您的网络URL替换为您的URL。
<meta http-equiv="Content-Security-Policy" content="default-src connect-src YOUR NETWORK URL 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">