我想创建一个用于调试的cordova通用客户端。但是我面临着跨域请求的问题。我的案例是: 1.我将我的源代码(html代码)部署在web服务器A上。2.我的后端数据源来自服务器B。3.我创建了一个cordova应用程序,并在设备或模拟器上运行。应用程序从服务器A访问url并打开应用程序页面,一切正常。但是当我的js代码从Server B读取数据时,所有的请求都失败了。我猜这是由于跨域限制造成的。
有人有解决这个问题的办法吗?
谢谢!
发布于 2014-12-30 15:06:24
既然您的初始HTTP请求通过并返回HTML,那么来自Cordova的连接似乎正在工作,至少对于服务器A是这样的。
您可以尝试将临时“内容”上传到服务器A,您可以尝试使用AJAX调用来获取该服务器A。
如果成功通过,则可以确定故障出在服务器B上,且CORS在前端工作正常。在这种情况下,您可以尝试从web客户端等访问A&B,以查看响应头中可能存在的差异。在这种情况下,服务器B可能缺少Access-Control-Allow-Origin:*报头。尝试将其添加到您的服务器配置或尝试JSONP。另外,如果您只允许使用以下命令连接到服务器A,请读取您的config.xml
<access origin="<server A>"/>
在这种情况下,您显然也需要允许服务器B。
如果在上失败,那么可以使用的资源就少了很多,我只能建议您研究一下像enable-cors.org这样的资源,这些资源演示了如何实际允许CORS。
https://stackoverflow.com/questions/27700572
复制相似问题