我有一个Cordova应用程序,其中第一个页面是向外部服务器发出Ajax请求的登录。
我添加了Content-Policy-Security元标记,如下所示:
$.ajax
登录函数被调用并被访问,但$.support.cors = true;
函数似乎完全被忽略。
在调用该函数之前,我已设置
config.xml
在我的<feature name="Whitelist">
<param name="android-package" value="org.apache.cordova.whitelist.WhitelistPlugin" />
</feature>
<access origin="*" subdomains="true" />
<allow-navigation href="*" />
<access origin="http://*.nutshellapps.co.uk" />
<allow-navigation href="http://*.nutshellapps.co.uk" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
文件中,我有以下
nutshellapps.co.uk
我已将上述所有内容添加为预防措施。
http://*.nutshellapps.co.uk
子域名是人们将使用其凭据登录的域名。所以我已将$.ajax({
url: serviceURL + "Json/Authentication/login",
type: "GET",
data: {'data':JSON.stringify(loginData)},
dataType: "jsonp",
crossDomain: true,
success: function(data) {
console.log(data);
},
error: function(jqXmlHttpRequest, textStatus, errorThrown) {
console.log('error');
});
添加到访问源。
我的元标记是否正确?
我混合使用内联样式和js,以及包含代码的css / js文件。
这适用于我使用过的早期版本的Cordova(3.5.0),但现在这会导致重大错误。如果我在浏览器上运行该应用程序,它工作正常,所以我显然知道它的白名单插件/跨域问题。
其他人有这个问题吗?
我的ajax电话在
之下for a in [4,3,2,1,0]:
print(a)
print()
def fun(start = 4):
if start >= 0:
print(start)
fun(start-1)
fun()
答案 0 :(得分:1)
您发布的内容安全策略元标记似乎格式错误:
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src: 'self' 'unsafe-inline' 'unsafe-eval'>
没有结束&#34;。
对于Cordova,你也想要有差距:协议集和Android https://ssl.gstatic.com,所以我建议尝试:
<meta http-equiv="Content-Security-Policy" content="default-src * data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *;">
如果你想指定不同的连接主机和default-src,你也可以在那里添加connect-src。
可以找到讨论这些问题的博文here。
答案 1 :(得分:0)
我设法通过在index.html
的顶部添加以下内容来解决此问题LifecycleModule
我意识到这并不完全安全,但我无法继续工作。
另外,我确保在我的config.xml中启动应用程序时加载了我的WhitelistPlugin
<meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src *">