我有一个很大的麻烦,因为2天,我的应用程序以前工作的地方与相同的代码,现在我得到这个错误,如果我运行ionic serve
命令,并作出POST请求:
OPTIONS https://www.example.com/file.php net::ERR_EMPTY_RESPONSE(anonymous function) @
ionic.bundle.js:16185sendReq @
ionic.bundle.js:15979status.$get.serverRequest @
ionic.bundle.js:15712deferred.promise.then.wrappedCallback @
ionic.bundle.js:19197deferred.promise.then.wrappedCallback @
ionic.bundle.js:19197(anonymous function) @
ionic.bundle.js:19283promises.$get.Scope.$eval @
ionic.bundle.js:20326promises.$get.Scope.$digest @
ionic.bundle.js:20138promises.$get.Scope.$apply @
ionic.bundle.js:20430(anonymous function) @
ionic.bundle.js:26763(anonymous function) @
ionic.bundle.js:10478forEach @ ionic.bundle.js:7950eventHandler @
ionic.bundle.js:10477
如果我尝试在iPhone, iPhone模拟器,android设备上运行应用程序,一切都运行良好。我在MAC OSX和Windows上使用chrome浏览器,启用了CORS插件。
如果我切换到开发服务器(这不是https,但http只有http://dev.example.com/file.php),我得到同样的错误也在所有设备,但Android。我试图通过添加这个:Header set Access-Control-Allow-Origin "*"
编辑.htaccess
文件来启用CORS在我的apache服务器上,它没有解决任何问题。请给我一些建议。
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
$response = array(
'LoginResult' => array(
'Authorized' => TRUE,
'FormOpen' => TRUE,
),
);
echo json_encode($response);
exit;
这是一些工作的PHP代码(服务器端),我使用我的Ionic应用程序。
if (authObject == undefined) {
authObject = {};
}
$http({
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
method: "POST",
url: LoginUrl,
data: authObject
}).success(function (data) {
if (data.LoginResult && data.LoginResult.Authorized) {
// The login was successfull, save the authObject.
$localStorage.currentUser = authObject;
// deferred.resolve('Welcome ' + authObject.UserName + '!');
}
else {
// deferred.reject('Wrong credentials.');
}
}).error(function (data, status, headers, config) {
// deferred.reject(data, status);
});
这是Ionic的呼叫。
希望有帮助,我不知道你是否有访问服务器端的权限
这绝对是一个CORS问题,我暂时解决了(我现在可以在浏览器上开发)通过切换到safari,去开发>禁用交叉原点-限制。显然,chrome上的CORS插件未能禁用CORS限制。希望对其他开发者有所帮助