CORS不适用于离子

时间:2015-05-21 10:36:06

标签: javascript php angularjs cors ionic

我正在尝试将json发送到服务器上的php脚本,即使我在php脚本中包含了头文件以使控制台抛出错误的错误

错误消息

  

XMLHttpRequest无法加载http://www.awesomegag.0fees.us/updata.php。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' http://localhost:8100'因此不允许访问。响应的HTTP状态代码为403。

我的代码:

PHP

<?php 
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');
header("Content-Type: application/json; charset=UTF-8");
if (isset($_SERVER['HTTP_ORIGIN'])) {
    header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
    header('Access-Control-Allow-Credentials: true');
    header('Access-Control-Max-Age: 86400');    // cache for 1 day
}

// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {

    if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
        header("Access-Control-Allow-Methods: GET, POST, OPTIONS");         

    if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
        header("Access-Control-Allow-Headers:            {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");

    exit(0);
}
echo"hello";
$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
?>

我的app.js

.controller('datactr',   ['$scope','$http','ApiEndpoint',function($scope,$http,ApiEndpoint) {
$scope.submit=function(){
          console.log("step1");

    $http({
      method:'POST',
      url:'http://www.awesomegag.0fees.us/updata.php',
      data:{
        'name':$scope.name
      }

    }).success(function(data,status,header,config){
      console.log("step2");
      console.log(data);
    })
 });

我尝试通过在ionic.project中将path / api和proxyUrl设置为updata.php地址,然后将http服务中的url替换为/ api,使用代理方法。我收到500内部服务器错误。

有人可以帮忙吗?

  

更新:我已经搬到另一台服务器,一切正常。我想这是服务器的一些问题,但不知道如何解决它。

1 个答案:

答案 0 :(得分:0)

看起来您的服务器不允许使用OPTIONS方法。

现代浏览器对交叉原始请求执行“飞行前”请求,以确保在发送GET / POST请求之前允许这样做。

enter image description here

解决方案:启用OPTIONS命令。 Apache http://httpd.apache.org/docs/trunk/mod/mod_allowmethods.html

的示例