使用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相关的问题,如何在服务器端启用它?

  • OpenGL ES - glReadPixels
  • 用我的服务器提供安全的Facebook身份validation
  • Xamarin.Forms SetHasNavigationBar false会导致PushAsync上跳转
  • NativeScript:自定义相机视图
  • Android中的iOS NSNotificationCenter相当于什么?
  • 应用程序的build设者:如何评估自己的价值?
  • 使用PHP / Javascript检测应用内浏览器(WebView)
  • Android和IOS后端框架的select?
  • 当您从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. 再次编译您的应用程序并在手机或模拟器中共进午餐

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

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

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