【问题标题】:Phonegap No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed accessPhonegap 请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'null' 不允许访问
【发布时间】:2014-03-13 10:57:33
【问题描述】:

在 phonegap 中,我在使用 jQuery AJAX 调用 PHP 文件时遇到了问题。调用文件时出现的错误是:

请求的资源上没有“Access-Control-Allow-Origin”标头

Google 说要把这段代码header('Access-Control-Allow-Origin: *'); 放在当前的 PHP 文件头中。我将代码放在标题中,但仍然没有更改。我已经附上了我的jsfidde

文件connectionsqlphp.php代码在这里

<?php 

header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
echo "hi";

?>

【问题讨论】:

  • 您的 config.xml 文件中有 &lt;access origin="*" /&gt; 吗?
  • @Dawson Loudon 是的,我有
  • 您是在手机/模拟器上还是在浏览器中进行测试?如果您在桌面浏览器上进行测试,则更有可能发生源错误。
  • 我不是php专家,但你确定echo "hi"会生成一个有效的json输出???
  • @Ekim 我在手机中检查了浏览器,它没有给出任何错误,只是眨眼而已..

标签: php jquery ajax json cordova


【解决方案1】:

只要在 config.xml 中正确配置访问源,phonegap/cordova 应该不会出现跨源问题。

如果您错过了一些 CORS 标头,则在从浏览器测试时出现此消息是正常的。尝试添加:

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');

不过,对于 phonegap 应用,您再次不需要这些标头。

当您执行echo "hi"; 时,您不是在发送 json,而是发送一个文本“hi”。 (仅在标头中写入 json 不会格式化您回显的内容)。

我认为您应该在 javascript 中使用 $.get 并从 php 中删除 header('Content-Type: application/json'); 以便应用程序需要一个简单的文本或修改您的 php 以真正发送 JSON。

例如:

echo "{message:\"hi\"}";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 2016-05-27
    • 2018-07-06
    • 2013-12-24
    • 2018-10-23
    • 2017-07-17
    • 2017-02-04
    相关资源
    最近更新 更多