无法从Windows 10 Cordova应用程序的Web View中进行ajax调用

6
我们正在开发一个Windows 10 cordova应用程序。根据我们的要求,我们在HTML页面中添加了一个Web视图(<x-ms-webview id="id-web-view" height="100%" width="100%"></x-ms-webview>),并从AppData\Local\Packages\LocalState目录加载Web视图中的资源(HTML、JS、CSS等)。HTML、CSS、JS和其他资源都能够正常加载。
我们无法从Web视图(嵌入式页面)进行任何AJAX调用。出现错误-XMLHttpRequest:网络错误0x80070005,访问被拒绝。父HTML的AJAX调用正常工作。
看起来这是一个CORS问题。我尝试了各种JQuery和其他选项来启用CORS,但没有成功。
非常感谢您的帮助。

CORS问题应该由服务器端解决。您是否可以访问您的AJAX请求的服务器? - Elvis Xia - MSFT
是的,我可以访问服务器。如果您能写下需要启用CORS的服务器端更改,将不胜感激。 - Shamse Alam
2个回答

1
定制标签中的内容安全策略,根据需要添加“unsafe-inline”到default-src以启用内联JavaScript。有关详细信息,请参见go.microsoft.com/fwlink/?LinkID=617521,添加meta标签http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *"
请访问http://taco.visualstudio.com/en-us/docs/cordova-security-whitlists/

你能在Android/iOS中进行ajax调用吗?调用ajax函数的方式为yourWebView.loadUrl("javascript:foobar('somedata')"); 如果在Android/iOS中ajax调用正常,则可能是Windows平台存在问题请参阅启用cors,否则启用HTTP:// enable-cors.org/server.html。请还访问https://github.com/jessemonroy650/top-phonegap-mistakes/blob/master/new-to-Phonegap.md。 - Maruthi Gongadi
是的,iOS和Android都正常工作。在Windows中,我能够从父页面进行Ajax调用。只有在嵌入式WebView中才无法工作,我们已将其添加到Windows应用程序的索引页面中以从appData文件夹加载HTML。 - Shamse Alam
@Shamse,你尝试使用iframe而不是x-ms-webview了吗?也许可以提供一个重现问题的演示项目? - Elvis Xia - MSFT
我们不能使用iFrame,因为我们需要调用Cordova插件,而且我们正在从appData目录加载数据。iFrame将无法支持这个。 - Shamse Alam

0

为了启用CORS,只需在服务器端网站上添加响应头“Access-Control-Allow-Origin:{您的域}或{*}”即可。

添加响应头的步骤取决于您的服务器。您可以参考服务器上的CORS来了解最常用的服务器。

如果您的服务器不在该列表中,或出现其他特定问题,请告诉我。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接