您好我正在通过Cordova(5.1.1)/ Phonegap构建iOS应用程序,我遇到了一个无法解决的问题。
一个基本的Ajax
电话会引发SecurityError: DOM Exception 18
我尝试了所有关于白名单的技巧,现在我迷路了......任何可以提供帮助的人?谢谢。
以下是设备准备就绪后的操作:
var getUrl = 'http://shopplo.com/api/posts/radius/'+app.lat_min+'x'+app.lat_max+'x'+app.lng_min+'x'+app.lng_max+'';
//console.log(getUrl);
var getPosts = $.ajax({
method: 'GET',
url: getUrl,
dataType: 'JSON'
})
.done(function(e) {
console.log( e );
})
.fail(function(e) {
//console.log( "error");
$.each(e, function(key, element) {
console.log('key: ' + key + '\n' + 'value: ' + element);
});
})
.always(function() {
console.log( "complete" );
});
getUrl是:{{3}}
我得到了:
2015-07-20 01:12:55.981 ShopploLight[779:568632] key: responseJSON :: value: undefined
2015-07-20 01:12:55.983 ShopploLight[779:568632] key: status :: value: 0
2015-07-20 01:12:55.983 ShopploLight[779:568632] key: statusText :: value: Error: SecurityError: DOM Exception 18
2015-07-20 01:12:55.984 ShopploLight[779:568632] complete
答案 0 :(得分:3)
检查您的元标记。 默认情况下,它使用:
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
使用以下代码启用所有请求
<!-- Enable all requests, inline styles, and eval() -->
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src: 'self' 'unsafe-inline' 'unsafe-eval'">
答案 1 :(得分:2)
由于语法错误导致上述答案错误。
以下是正确的:
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval';">
答案 2 :(得分:0)
您可以只允许您正在进行ajax调用的URL,而不是允许所有内容。例如,如果我想从facebook API获得一些东西,我可能会有类似的东西:
<meta http-equiv="Content-Security-Policy" content="style-src 'self' 'unsafe-inline'; script-src: 'self' https://graph.facebook.com">