[
https://issues.apache.org/jira/browse/CB-3576?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13676786#comment-13676786
]
Montyleena commented on CB-3576:
--------------------------------
Another important finding:
I downloaded PhoneGap 2.7.0's source code and found that InAppBrowser.java
doesn't override onReceivedSslError() like CordovaWebViewClient.java does. I
added an implementation of onReceivedSslError() in InAppBrowser.java and did
handler.proceed() inside that and generated cordova-2.7.0.jar and ran my
application. As expected, i was able to open the https URL in InAppBrowser
after this.
So, it looks like:
InAppBrowser.java is missing the re-implementation of onReceivedSslError() and
even after this, we need some way to override this from the external code
because we don't have access to the InAppBrowser object from the PhoneGap app.
So, some form of flag or API needs to be provided through which we can set the
https URL preference similar to what we can do with the main Cordova web view
by overwriting onReceivedSslError().
> Privately signed https links don't work in InAppBrowser
> -------------------------------------------------------
>
> Key: CB-3576
> URL: https://issues.apache.org/jira/browse/CB-3576
> Project: Apache Cordova
> Issue Type: Bug
> Components: Plugin InAppBrowser
> Affects Versions: 2.7.0
> Environment: Android and iOS
> Reporter: Montyleena
> Assignee: Steve Gill
> Labels: android, https, inappbrowser,, ios, ssl
>
> Local https links are blocked by default in InAppBrowser (links using a local
> SSL certificate which can't be verified by a 3rd party). Ideally, user should
> be given an option to proceed or cancel the request like the default
> desktop/mobile browsers do.
> Right now, we have to overwrite the following API in Android to access such
> URLs but onReceivedSslError() function gets called only for the main PhoneGap
> window browser and not for InAppBrowser.
> Create a new class:
> public class CustomWebViewClient extends CordovaWebViewClient {
>
> public static final String LOG_TAG = "Plugin";
>
> public CustomWebViewClient(DroidGap ctx) {
> super(ctx);
> Log.d(LOG_TAG, "Constructor!");
> }
> @Override
> public void onReceivedSslError(WebView view, SslErrorHandler handler,
> SslError error) {
> handler.proceed();
> }
> }
> In the main class, we use our custom class as a web view client
> CordovaWebViewClient webViewClient = new CustomWebViewClient(this);
> webViewClient.setWebView(this.appView);
> this.appView.setWebViewClient(webViewClient);
> And similar type of code needs to be written for iOS.
> InAppBrowser should pick up the SSL settings from the main web view and once
> we overwrite the onReceivedSslError() function, then it should allow such
> URLs in the InAppBrowser too.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira