diff --git a/android/capacitor/src/main/java/com/getcapacitor/WebViewLocalServer.java b/android/capacitor/src/main/java/com/getcapacitor/WebViewLocalServer.java index 097e25af4..579146ee8 100755 --- a/android/capacitor/src/main/java/com/getcapacitor/WebViewLocalServer.java +++ b/android/capacitor/src/main/java/com/getcapacitor/WebViewLocalServer.java @@ -123,8 +123,8 @@ public String getReasonPhrase() { return reasonPhrase; } - public Map getResponseHeaders() { - return responseHeaders; + public Map buildDefaultResponseHeaders() { + return new HashMap(responseHeaders); } } @@ -205,7 +205,7 @@ private WebResourceResponse handleLocalRequest(WebResourceRequest request, PathH if (request.getRequestHeaders().get("Range") != null) { InputStream responseStream = new LollipopLazyInputStream(handler, request); String mimeType = getMimeType(path, responseStream); - Map tempResponseHeaders = handler.getResponseHeaders(); + Map tempResponseHeaders = handler.buildDefaultResponseHeaders(); int statusCode = 206; try { int totalRange = responseStream.available(); @@ -213,6 +213,10 @@ private WebResourceResponse handleLocalRequest(WebResourceRequest request, PathH String[] parts = rangeString.split("="); String[] streamParts = parts[1].split("-"); String fromRange = streamParts[0]; + int bytesToSkip = Integer.parseInt(fromRange); + if (bytesToSkip > 0) { + responseStream.skip(bytesToSkip); + } int range = totalRange - 1; if (streamParts.length > 1) { range = Integer.parseInt(streamParts[1]); @@ -241,7 +245,7 @@ private WebResourceResponse handleLocalRequest(WebResourceRequest request, PathH handler.getEncoding(), statusCode, handler.getReasonPhrase(), - handler.getResponseHeaders(), + handler.buildDefaultResponseHeaders(), responseStream ); } @@ -252,7 +256,7 @@ private WebResourceResponse handleLocalRequest(WebResourceRequest request, PathH handler.getEncoding(), handler.getStatusCode(), handler.getReasonPhrase(), - handler.getResponseHeaders(), + handler.buildDefaultResponseHeaders(), null ); } @@ -285,7 +289,7 @@ private WebResourceResponse handleLocalRequest(WebResourceRequest request, PathH handler.getEncoding(), statusCode, handler.getReasonPhrase(), - handler.getResponseHeaders(), + handler.buildDefaultResponseHeaders(), responseStream ); } @@ -316,7 +320,7 @@ private WebResourceResponse handleLocalRequest(WebResourceRequest request, PathH handler.getEncoding(), statusCode, handler.getReasonPhrase(), - handler.getResponseHeaders(), + handler.buildDefaultResponseHeaders(), responseStream ); } @@ -375,7 +379,7 @@ private WebResourceResponse handleProxyRequest(WebResourceRequest request, PathH handler.getEncoding(), handler.getStatusCode(), handler.getReasonPhrase(), - handler.getResponseHeaders(), + handler.buildDefaultResponseHeaders(), responseStream ); }