No' Access-Control-Allow-Origin'标头出现在请求的资源上 - 角js

时间:2015-06-16 13:31:59

标签: javascript php angularjs codeigniter ionic-framework

我使用php codeigniter restful api作为服务器端和客户端应用程序的离子框架开发应用程序, 我尝试将客户端应用与服务器API连接,但我遇到了以下问题

XMLHttpRequest cannot load http://localhost:90/mrk/index.php/MRKGeneral_api/user_login. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8100' is therefore not allowed access.

我在客户端使用了以下代码,

$scope.signIn = function(form) {
        if(form.$valid) {
            var postData = { 'username' : $scope.authorization.username, 'password' : $scope.authorization.password };

            $http({
                url: "http://localhost:90/mrk/index.php/MRKGeneral_api/user_login", method: 'POST',
                data: postData,
                headers : {'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'}
            }).then(function(result) { 
                if(result.status == 200) {
                    if(result.data.success) {
                        GeneralService.userType = result.data.usertype;
                        GeneralService.userData = result.data;
                        $scope.errormsg = result.data.message;
                        $state.go('/app/dashboard');
                    } else {
                        $scope.errormsg = result.data.message;
                    }
                } else {

                }

            });

        }
    }

在我的服务器端,我也设置了标题,如下所示,

header('Access-Control-Allow-Origin: *');
        header("Access-Control-Allow-Headers: X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method");
        header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE");
        $method = $_SERVER['REQUEST_METHOD'];
        if($method == "OPTIONS") {
            die();
        }

但仍然获得No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' http://localhost:8100'因此不允许访问。

1 个答案:

答案 0 :(得分:-1)

您需要在应用配置中允许跨域调用

app.config(function($httpProvider) {
    //Enable cross domain calls
    $httpProvider.defaults.useXDomain = true;
});