我完成了第一个混合应用程序的开发。它在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来构建我的应用程序。
答案 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请求代码没有任何问题。