diff --git a/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewClient.java b/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewClient.java index a484be1..9a66c9e 100644 --- a/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewClient.java +++ b/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewClient.java @@ -94,6 +94,15 @@ public void onPageStarted(WebView webView, String url, Bitmap favicon) { RNCWebView reactWebView = (RNCWebView) webView; + // Block initial loads to non-allowed domains (shouldOverrideUrlLoading + // doesn't fire for the initial source URL) + String host = Uri.parse(url).getHost(); + if (host != null && !reactWebView.isHostAllowed(host)) { + reactWebView.stopLoading(); + this.onReceivedError(webView, -1, "Navigation blocked by sandbox: " + url, url); + return; + } + reactWebView.callInjectedJavaScriptBeforeContentLoaded(); } @@ -103,6 +112,7 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) { final boolean isJsDebugging = rncWebView.getReactApplicationContext().getJavaScriptContextHolder().get() == 0; if(!rncWebView.isHostAllowed(Uri.parse(url).getHost())){ rncWebView.stopLoading(); + this.onReceivedError(view, -1, "Navigation blocked by sandbox: " + url, url); return true; }