我有一个cordova应用(SPA),需要向本地网络资源发出XmlHttpRequest。
如果应用位于remote mode中,则我无法/不允许定义必要的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? 还有什么其他方法可以创建与本地模式兼容的单页应用程序?
答案 0 :(得分:0)
引起此问题的应该是 Content-Security-Policy (内容安全政策),请参见connect-src document
HTTP内容安全性策略(CSP)connect-src伪指令限制可以使用脚本接口加载的URL。
您可以尝试将本地网络URL添加到connect-src
文件的第一个元index.html
内容中的Content-Security-Policy
资源指令中。如以下代码所示,您可以将 YOUR NETWORK 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 *">