只是好奇尝试使用带有ajax的phonegap从服务器查询通知我的ip在一段时间后因为Access-Control-Allow-Origin不允许而被阻止。该应用程序仍然可以运行,直到你被阻止。
找到解决方法是jsonp或允许服务器上的访问控制。但是jsonp无法传输文件,所以第二个是文件上传的选项。
允许在服务器上进行访问控制的代码:
<?php header('Access-Control-Allow-Origin: *'); ?>
ft.upload的phonegap也需要吗?
另一个问题是,有一种方法只允许一个特定的phonegap应用吗?
因为您可以将*更改为特定网址但不确定如何为手机屏幕执行此操作。
由于
答案 0 :(得分:2)
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="*" />
答案 1 :(得分:1)
要仅允许特定应用与您的服务器配合使用,您可以做的是通过带有您的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添加到允许的标题列表中。