使用https $ http请求状态0

Fra*_*ssi 16 https android ios angularjs ionic-framework

情况:

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

之前,API在http://地址上,一切正常.

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

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

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

白名单:

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

<allow-navigation href="http://*/*" /> 
Run Code Online (Sandbox Code Playgroud)

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

<allow-navigation href="https://*/*" /> 
Run Code Online (Sandbox Code Playgroud)

<allow-navigation href="*" />
Run Code Online (Sandbox Code Playgroud)

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);
     });
Run Code Online (Sandbox Code Playgroud)

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 );
}
Run Code Online (Sandbox Code Playgroud)

问题:

如何让API在HTTPS上运行?

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

小智 2

当您从 Http 切换到 Https 时,主要问题在于握手或证书合规性。请检查您的 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