From f8bcd357c1338938cd4af06085453094c7aa5004 Mon Sep 17 00:00:00 2001 From: Christopher Harris Date: Fri, 11 Feb 2022 12:56:26 -0700 Subject: [PATCH] Requests from service workers use "Accept: */*" so checking for "text/html" in Accept header can't work. As a workaround, add check if proxy request URL contains ".html" and treat it as HTML if it does. This is the same as what handleLocalRequest does to identify HTML files. --- .../java/com/getcapacitor/WebViewLocalServer.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/android/capacitor/src/main/java/com/getcapacitor/WebViewLocalServer.java b/android/capacitor/src/main/java/com/getcapacitor/WebViewLocalServer.java index e38cb05b8..29e65bdd9 100755 --- a/android/capacitor/src/main/java/com/getcapacitor/WebViewLocalServer.java +++ b/android/capacitor/src/main/java/com/getcapacitor/WebViewLocalServer.java @@ -327,10 +327,14 @@ private WebResourceResponse handleProxyRequest(WebResourceRequest request, PathH String url = request.getUrl().toString(); Map headers = request.getRequestHeaders(); boolean isHtmlText = false; - for (Map.Entry header : headers.entrySet()) { - if (header.getKey().equalsIgnoreCase("Accept") && header.getValue().toLowerCase().contains("text/html")) { - isHtmlText = true; - break; + if (url.contains(".html")) { + isHtmlText = true; + } else { + for (Map.Entry header : headers.entrySet()) { + if (header.getKey().equalsIgnoreCase("Accept") && header.getValue().toLowerCase().contains("text/html")) { + isHtmlText = true; + break; + } } } if (isHtmlText) {