diff --git a/src/android/com/synconset/CordovaHTTP/CordovaHttp.java b/src/android/com/synconset/CordovaHTTP/CordovaHttp.java index e90ad6f..c5196c9 100644 --- a/src/android/com/synconset/CordovaHTTP/CordovaHttp.java +++ b/src/android/com/synconset/CordovaHTTP/CordovaHttp.java @@ -35,7 +35,8 @@ public abstract class CordovaHttp { private static AtomicBoolean sslPinning = new AtomicBoolean(false); private static AtomicBoolean acceptAllCerts = new AtomicBoolean(false); - + private static AtomicBoolean acceptAllHosts = new AtomicBoolean(false); + private String urlString; private Map params; private Map headers; @@ -61,7 +62,11 @@ public abstract class CordovaHttp { sslPinning.set(false); } } - + + public static void acceptAllHosts(boolean accept) { + acceptAllHosts.set(accept); + } + protected String getUrlString() { return this.urlString; } @@ -81,10 +86,11 @@ public abstract class CordovaHttp { protected HttpRequest setupSecurity(HttpRequest request) { if (acceptAllCerts.get()) { request.trustAllCerts(); - request.trustAllHosts(); + request.trustAllHosts(true); } if (sslPinning.get()) { request.pinToCerts(); + request.trustAllHosts(acceptAllHosts.get()); } return request; } diff --git a/src/android/com/synconset/CordovaHTTP/CordovaHttpPlugin.java b/src/android/com/synconset/CordovaHTTP/CordovaHttpPlugin.java index ffe4ad6..482f2ea 100644 --- a/src/android/com/synconset/CordovaHTTP/CordovaHttpPlugin.java +++ b/src/android/com/synconset/CordovaHTTP/CordovaHttpPlugin.java @@ -84,6 +84,10 @@ public class CordovaHttpPlugin extends CordovaPlugin { boolean accept = args.getBoolean(0); CordovaHttp.acceptAllCerts(accept); callbackContext.success(); + } else if (action.equals("acceptAllHosts")) { + boolean accept = args.getBoolean(0); + CordovaHttp.acceptAllHosts(accept); + callbackContext.success(); } else if (action.equals("setHeader")) { String header = args.getString(0); String value = args.getString(1); diff --git a/src/android/com/synconset/CordovaHTTP/HttpRequest.java b/src/android/com/synconset/CordovaHTTP/HttpRequest.java index a6e39a5..42cf568 100644 --- a/src/android/com/synconset/CordovaHTTP/HttpRequest.java +++ b/src/android/com/synconset/CordovaHTTP/HttpRequest.java @@ -3252,11 +3252,17 @@ public class HttpRequest { * * @return this request */ - public HttpRequest trustAllHosts() { + public HttpRequest trustAllHosts(boolean enable) { final HttpURLConnection connection = getConnection(); - if (connection instanceof HttpsURLConnection) - ((HttpsURLConnection) connection) - .setHostnameVerifier(getTrustedVerifier()); + if (connection instanceof HttpsURLConnection) { + if (enable) { + ((HttpsURLConnection) connection) + .setHostnameVerifier(getTrustedVerifier()); + } else { + ((HttpsURLConnection) connection) + .setHostnameVerifier(HttpsURLConnection.getDefaultHostnameVerifier()); + } + } return this; } diff --git a/www/cordovaHTTP.js b/www/cordovaHTTP.js index 0db45f1..4dc08b3 100644 --- a/www/cordovaHTTP.js +++ b/www/cordovaHTTP.js @@ -19,6 +19,9 @@ var http = { acceptAllCerts: function(allow, success, failure) { return exec(success, failure, "CordovaHttpPlugin", "acceptAllCerts", [allow]); }, + acceptAllHosts: function(allow, success, failure) { + return exec(success, failure, "CordovaHttpPlugin", "acceptAllHosts", [allow]); + }, post: function(url, params, headers, success, failure) { return exec(success, failure, "CordovaHttpPlugin", "post", [url, params, headers]); },