我有Cordova> 4.0.0,因此它具有CSP和白名单安全措施。
在浏览器中,我可以向API发出请求,但在Android设备中,它会给我这个错误:
file:/// http:/xxx.xxx.xxx/api/Login/DoLogin
无法加载资源:net :: ERR_FILE_NOT_FOUND
我搜索了一个解决方案,但没有任何效果。
我的config.xml包含这些字段(根据Cordova Whitelist Plugin文档):
<allow-navigation href="*" />
<allow-intent href="*" />
<access origin="*" />"
信息:我尝试使用此参数的多个组合,以及Api的URL。
(例如:<access origin="http://xxx.xxx.xxx/" subdomains="true" />
)
在我的Index.html中,我有这个CSP:
<meta http-equiv="Content-Security-Policy"
content="default-src *; style-src * 'self' 'unsafe-inline' 'unsafe-eval';
script-src * 'self' 'unsafe-inline' 'unsafe-eval';">
信息:在这里,我根据Cordova Whitelist Plugin
尝试了其他CSP组合所以,在有人问我安装之前:
使用Restangular作为请求。
我无法理解,有人可以帮助我吗?
编辑:请求代码
var baseLogin = Restangular.all('http:/xxx.xxx.xxx/api/Login/DoLogin');
dataApi.doLogin = function (var1, var2, var3, var4, var5) { // $http() returns a $promise that we can add handlers with .then() var parameter = null; parameter = { var1: var1, var2: var2, var3: var3, var4: var4, var5: var5 }; return baseLogin.post(parameter); };
我使用Ionic,因此它在浏览器中有CORS问题,以解决我在ionic.project文件中使用代理,但它只在浏览器中调用,在设备中它没有使用它。
答案 0 :(得分:1)
尝试从您的网址中删除“文件”,如@Phonolog所述。
没有必要,可能会导致手机内部异常。 尝试使用 http:/xxx.xxx.xxx/api/Login/DoLogin ,就像使用WCF服务一样。还要确保此端点已正确配置为接受传入请求。
Addendun:另外,你应该小心这些标签:
<allow-navigation href="*" />
<allow-intent href="*" />
<access origin="*" />"
这意味着允许访问所有内容,并允许与其他应用程序/服务进行通信。所以要小心,这可能会在将来引发安全问题。