请求的资源角度 js 上不存在“访问控制允许源”标头

No 'Access-Control-Allow-Origin' header is present on the requested resource- angular js

本文关键字:访问控制 许源 标头 不存在 资源 js 请求      更新时间:2023-09-26

我正在使用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();
        }

但仍然得到 请求的资源上不存在"访问控制允许源"标头。因此,不允许访问源"http://localhost:8100"。

您需要

在应用配置中允许跨域调用

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