我使用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'因此不允许访问。
答案 0 :(得分:-1)
您需要在应用配置中允许跨域调用
app.config(function($httpProvider) {
//Enable cross domain calls
$httpProvider.defaults.useXDomain = true;
});