Phonegap文件传输和Access-Control-Allow-Origin

时间:2013-07-01 01:58:11

标签: php cordova cross-domain

只是好奇尝试使用带有ajax的phonegap从服务器查询通知我的ip在一段时间后因为Access-Control-Allow-Origin不允许而被阻止。该应用程序仍然可以运行,直到你被阻止。

找到解决方法是jsonp或允许服务器上的访问控制。但是jsonp无法传输文件,所以第二个是文件上传的选项。

允许在服务器上进行访问控制的代码:

<?php header('Access-Control-Allow-Origin: *'); ?>

ft.upload的phonegap也需要吗?

另一个问题是,有一种方法只允许一个特定的phonegap应用吗?

因为您可以将*更改为特定网址但不确定如何为手机屏幕执行此操作。

由于

2 个答案:

答案 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添加到允许的标题列表中。