使用https $ http请求状态0

情况:

我正在开发一个从API接收数据的Ionic应用程序。

以前,API在http://地址上,一切正常。

然后我们将API移动到https://并且它不再起作用了。 或者,它仍然可以在浏览器中访问它,但不能在手机(或模拟器)中访问它。

我不确定可能是什么问题。 在控制台日志中,我看到请求的状态为0。

它可能与白名单,标题或CORS有关。 我尝试了几种方法但没有效果。

白名单:

在config.xml之前有这个白名单:

 

我曾尝试以多种方式修改它,但这并没有解决问题。 例如,我尝试过:

  

  

API请求:

这是API请求的一个示例:

 $http.get( 'https://MY_DOMAIN.com/mobile/list_mobile_project/' ,{},{"headers" : {"Content-Type" : "application/x-www-form-urlencoded; charset=UTF-8" }}) .success(function(data, status, headers, config) { // code }). error(function(data, status, headers, config) { console.log('Error with the API list_mobile_project'); console.log(data); console.log(status); console.log(headers); console.log(config); }); 

API响应:

这是API响应的一个例子:

 public function list_mobile_project() { header('Access-Control-Allow-Origin: *'); header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept"); // code echo json_encode( $project_list ); } 

问题:

如何让API在HTTPS上运行?

如果是与CORS相关的问题,如何在服务器端启用它?

当您从Http切换到Https时,问题主要是Hand Shake或证书合规性。 请检查您的SSL证书是否在您的信任库中可用,并检查您的Android设备是否支持证书提供商。 例如,初始Android平台不支持CA证书。

可能是以下两个链接可以给你一些想法。

http://nelenkov.blogspot.in/2011/12/using-custom-certificate-trust-store-on.html

http://www.codeproject.com/Articles/826045/Android-security-Implementation-of-Self-signed-SSL

我认为从设备CORS不是问题。 比如说这个 。 从浏览器进行测试产生CORS问题。 我认为问题是你的白名单。 在你的config.xml中添加(source: this ):

  

这只是一个猜测!

尝试使用: ionic plugin add cordova-plugin-whitelist

https://forum.ionicframework.com/t/update-to-cordova-5-0-0-make-http-call-error/22703

使用cordova 5.0.0,他们重新引入了白名单插件..你需要添加这个插件并允许你的后端url。

 $http.get('/someUrl').success(successCallback); 

如果您的应用程序是通过HTTPS提供的,那么您正在进行的任何调用都是针对相同的主机/端口等,因此也通过HTTPS进行。

如果您为请求使用完整的URI,例如$http.get('http://foobar.com/somePath')那么您将不得不更改您的URI以使用https

如果您在设备内运行APK文件的Android上看到此错误,则该错误与CORS无关。 当您开发本机或混合/本机移动应用程序时,除非它们是渐进式Web应用程序,否则CORS不是问题。 在开发针对设备的移动应用程序时,在开发和进行初始调试时,请使用chrome并禁用CORS。 您只需要运行[install-folder] \ chrome.exe –disable-web-security –user-data-dir

我也遇到过这种问题。 步骤是帮助您解决问题

  1. 创建新的Ionic应用程序
  2. 午餐你的手机或模拟器
  3. 修改您的WWW目录
  4. 再次编译您的应用程序并在手机或模拟器中共进午餐

问题是,检查是否添加正确的离子应用插件

我的应用程序问题通过添加插件解决了

我想,这些步骤对你有帮助。