Phonegap文件传输和访问控制允许来源


Phonegap file transfer and Access-Control-Allow-Origin

只是好奇地尝试使用带有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添加到允许的标头列表中。