在实时混合应用程序上没有“访问控制 - 允许 - 来源”问题

时间:2016-08-09 04:12:13

标签: php html5 cross-domain hybrid-mobile-app intel-xdk

我完成了第一个混合应用程序的开发。它在localhost中运行顺畅。但是当我试图让它生效时,我收到了这个错误。

  

XMLHttpRequest无法加载https://www.example.com/app/login.php。没有   请求中存在“Access-Control-Allow-Origin”标头   资源。因此不允许原点'null'访问。响应   有HTTP状态代码500。

为什么会这样?

以下是我在ajax请求中设置的示例:

$.ajax({
           type: "POST",
           url: "https://www.example.com/app/login.php",
           crossDomain: true,
           dataType: 'json',
           data: $.trim(frm.serialize()),
           timeout: 10000,
           beforeSend: function() {                  
              $('#loader').css({
                display: "block"
               });
  }

然后在我的php服务器代码:

<?php
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
header('HTTP/1.1 200 OK');
{
//more code here..

echo json_encode($result_array);
}

所以你可以看到我已经添加了一个标题Access-Control-Allow-Origin: *,但它似乎不起作用。如果让这个错误消失,我需要知道什么?或者它应该是什么问题?

更新:在firefox中,这是控制台日志错误:

  

阻止跨源请求:同源策略禁止读取   https://www.example/app/login.php处的远程资源。 (原因:   CORS标题'Access-Control-Allow-Origin'缺失)

有任何帮助吗?我正在使用intel xdk来构建我的应用程序。

2 个答案:

答案 0 :(得分:1)

我认为您的问题与访问控制无关

从你的错误:

  

响应的HTTP状态代码为500

建议您的应用程序崩溃。因此,Access-Control-Allow-Origin标头从未正确设置。当访问控制成为问题时,浏览器(无论如何,Firefox)显示状态代码401 Unauthorized,而不是500 server error

在错误日志中查找崩溃原因。同时尝试禁用.htaccess并查看错误是否仍然存在,因为损坏的规则/配置是导致崩溃的常见原因

答案 1 :(得分:0)

ajax发送错误为500 Internal Server Error,因为服务器端(php代码)有问题,其中使用的函数用于更高版本的PHP。我的主机php版本低于我在本地机器上使用的版本。试图重写代码并首先在线测试其响应数据修复了我的问题。 ajax请求代码没有任何问题。