无法通过离线Android应用程序的https连接到后端

时间:2017-09-27 05:37:02

标签: android ionic-framework hybrid-mobile-app content-security-policy

无法通过" https"连接到后端在通过离子CLI创建的Android应用程序。

在Android手机的调试模式下,它在浏览器上运行得非常好。只是不在发布模式下工作。它甚至适用于' http'但不是在' https'。

我的SSL证书不是自签名的。它是正确购买的证书,所有SSL检查员都说没问题。

尝试了我在互联网上找到的所有解决方案。

  1. 已安装的whitelist-plugin。
  2. 重新安装了whitelist-plugin。
  3. 使用" *"添加了内容安全策略。对于default-src。
  4. server { listen 8080; server_name localhost; location / { proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:3000/; } }

    1. 已添加<meta http-equiv="Content-Security-Policy" content="default-src *; style-src * 'unsafe-inline'; media-src *; script-src *;">
    2. 看起来应用程序本身会阻止请求外出。 似乎没什么用。请帮忙。

1 个答案:

答案 0 :(得分:0)

非常简单的解决方案是在API中允许两个端口,例如

3001(用于SSL / HTTPS)和3002(用于HTTP。)。这样,您的应用可以正常运行,并且您的网站可以在HTTPS中完美运行

我的代码如下,效果很好:

var express = require('express');
var DataController = require('./user/DataController');
var UserController = require('./user/UserController');
var db = require('./database/database-db'); 
var cors = require('cors');
var app = express();

app.use(cors());
app.use(function(req, res, next) {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.setHeader('Access-Control-Allow-Methods', 'POST');
res.setHeader('Access-Control-Allow-Credentials', true);
next();
});

app.use('/user', UserController);
app.use('/data', DataController);
app.get('/', function(req, res){
res.send("Welcome to the secure mobile and web development world");
});

// This settings are for HTTPS, SSL web applications.

// var https = require("https");
// var fs = require("fs");

// var options = {
//   key: fs.readFileSync("/home/path/ssl/keys/key.key"),
//   cert: fs.readFileSync("/home/path/ssl/certs/crt.crt")
  
//   };

// https.createServer(options,app).listen(3001);
// console.log('Welcome to the security world')


// This settings are only for HTTP sites

// var http = require("http");
// var fs = require("fs");

// http.createServer(app).listen(3001);
// console.log('Welcome to the security')



//This settings are for both HTTPS,HTTP SSL web applications.

var https = require("https");
var http = require("http");
var fs = require("fs");

var options = {
  key: fs.readFileSync("/home/path/ssl/keys/key.key"),
  cert: fs.readFileSync("/home/path/ssl/keys/crt.crt")
  };

https.createServer(options,app).listen(3001);
console.log('Welcome to the security world')
http.createServer(app).listen(3002);
console.log('Welcome to the proxy world')