【问题标题】:No 'Access-Control-Allow-Origin' issue on live Hybrid App实时混合应用程序上没有“访问控制允许来源”问题
【发布时间】:2016-12-14 23:29:14
【问题描述】:

我已经完成了我的第一个混合应用程序的开发。它在本地主机中运行顺利。但是当我尝试让它生效时,我得到了这个错误。

XMLHttpRequest 无法加载 https://www.example.com/app/login.php。不 请求中存在“Access-Control-Allow-Origin”标头 资源。因此,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 构建我的应用程序。

【问题讨论】:

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


    【解决方案1】:

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

    根据您的错误:

    响应的 HTTP 状态代码为 500

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

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

    【讨论】:

    • 我正在使用谷歌浏览器。我尝试使用 firefox,这是错误:[HTTP/1.1 500 Internal Server Error 2170ms]
    • 跨源请求被阻止:同源策略不允许读取example.com/app/login.php 的远程资源。 (原因:CORS 标头“Access-Control-Allow-Origin”缺失)。
    • 同意我的回答。当 CORS 出现问题时,Firefox 返回代码 401。因为你得到代码500 我认为根本问题在别处;您在设置 CORS 标头之前遇到了崩溃。所以浏览器会告诉你它从未收到标题。
    • 我只是想知道为什么它在我的本地主机上运行顺利而没有任何错误.. :/
    • 服务器设置可能有所不同。您可能只是缺少一些 PHP 扩展。
    【解决方案2】:

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

    【讨论】:

    • 我很高兴你解决了这个问题:恕我直言 ck,我告诉你这不是关于 CORS,它是 10 天前的服务器端脚本错误,并要求你查看您的错误日志以了解详细信息,但您一直对我的回答提出质疑。如果一个答案有用,你应该点赞
    • 没问题@BeetleJuice。谢谢你的帮助。
    猜你喜欢
    • 1970-01-01
    • 2017-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-18
    • 2017-07-21
    • 2020-10-16
    相关资源
    最近更新 更多