5

只是好奇尝试使用带有ajax的phonegap从服务器查询我的ip在一段时间后由于不允许访问控制允许来源而被阻止。该应用程序仍然可以运行,直到您被阻止为止。

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

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

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

phonegap 的 ft.upload 是否也需要这个?

另一个问题是有没有办法只允许一个特定的phonegap应用程序呢?

由于您可以将 * 更改为特定的 url,但不确定如何为 phonegap 执行此操作。

谢谢

4

2 回答 2

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="*" />
于 2013-12-02T14:23:19.037 回答
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 添加到允许的标头列表中。

于 2013-12-01T04:00:28.917 回答