php - 请求的资源上存在 Phonegap No 'Access-Control-Allow-Origin' header 。因此不允许访问 Origin 'null'

标签 php jquery ajax json cordova

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

No 'Access-Control-Allow-Origin' header is present on the requested resource

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 中正确配置 access origin,phonegap/cordova 中就不会有跨源问题。

如果您错过了一些 CORS header ,那么在从浏览器进行测试时收到此消息是正常的。尝试添加:

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

但是再次重申,对于 phonegap 应用程序,您不需要这些 header 。

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

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

例如:

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

关于php - 请求的资源上存在 Phonegap No 'Access-Control-Allow-Origin' header 。因此不允许访问 Origin 'null',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21773303/

相关文章:

php - 将 mysql 结果更改为产品表

javascript - 在 AJAX 调用完成之前如何隐藏页面元素?

jquery - 如何在 if 语句内的克隆元素上使用 `$.trim()` ?

asp.net - asp.net updatePanels 的替代方案

php - 提交表单 PHP 修改为 JQuery AJAX

php - 设置 http header 时丢失 session 数据(在 CodeIgniter 中)

java - 如何为 Web 应用程序创建文件服务器

jquery - 使用 jQuery 在每个 session 中显示一次启动屏幕...加载期间主页 "flashing"

php - 删除 PHP mysql 行时 Ajax 不工作

javascript - 我想让 2 个 html 选择标签依赖。我该怎么做?