【问题标题】:Phonegap file transfer and Access-Control-Allow-OriginPhonegap 文件传输和 Access-Control-Allow-Origin
【发布时间】:2013-06-28 02:32:42
【问题描述】:

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

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

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

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

phonegap的ft.upload也需要这个吗?

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

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

谢谢

【问题讨论】:

  • 您是否 100% 肯定它是因为 Access-Control-Allow-Origin 而被阻止的?还是您只是忘记将 phonegab config.xml 文件更改为设置 &lt;access origin="*" /&gt; 或您的域是什么?
  • 使用PhoneGap 专用的FileTransfer api 时,您不必处理来源

标签: php cordova cross-domain


【解决方案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 添加到允许的标头列表中。

【讨论】:

  • 我会试试这个并回复你,看起来很有希望,谢谢。
  • 请您澄清一下您的意思:“您必须将 X-ACCESS-TOKEN 添加到允许的标头列表中。” ?
【解决方案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="*" />

【讨论】:

  • 你不懂。我的问题是PHONEGAP->..request..-> SERVER,而不是相反。 ..request.. 也应该包含一个 cookie。 ft.upload 只是不会发送 cookie
猜你喜欢
  • 2016-09-30
  • 2013-10-28
  • 2014-03-24
  • 1970-01-01
  • 1970-01-01
  • 2017-06-15
  • 2015-06-17
  • 2013-01-20
  • 2014-01-12
相关资源
最近更新 更多