只是好奇地尝试使用带有ajax的phonegap从服务器查询,注意到由于不允许访问控制允许起源,我的ip在一段时间后被阻止。不过,在你被屏蔽之前,该应用程序仍然可以运行。
找到了解决这个问题的方法,要么是jsonp,要么是允许对服务器进行访问控制。但是jsonp不能传输文件,所以第二个选项是文件上传的选项。
允许在服务器上进行访问控制的代码:
<?php header('Access-Control-Allow-Origin: *'); ?>
phonegap的ft.upload也需要这个吗?
另一个问题是,有没有办法只允许使用特定的phonegap应用程序?
由于您可以将*更改为特定的url,但不确定如何为phonegap执行此操作。
感谢
PhoneGap可以在config.xml文件中定义此选项。
http://docs.phonegap.com/en/3.2.0/guide_appdev_whitelist_index.md.html#Whitelist%20Guide
<access origin="http://google.com" />
<access origin="https://google.com" />
<access origin="http://*.google.com" />
<access origin="*" />
要只允许特定的应用程序与您的服务器一起工作,您可以做的是通过带有AJAX请求的标头发送私钥,如"X-ACCESS-TOKEN"。
$.ajax({
type: 'POST',
url: url,
headers: {
"X-ACCESS-TOKEN":"CLIENT_SECRET_KEY",
}
然后在服务器上,您可以检查标头是否已发送,以及是否等于预期值。
此外,我建议使用.htaccess处理头,而不是直接在后端代码中处理。
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type, accept, X-ACCESS-TOKEN"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
请注意,如果您遵循我的建议,您将不得不将X-ACCESS-TOKEN添加到允许的标头列表中。