瀏覽代碼

fix: httpserver with http:// access

ryanemax 1 周之前
父節點
當前提交
2569c77c6f

+ 3 - 0
6.2.1/capacitor/src/main/java/com/getcapacitor/Bridge.java

@@ -401,6 +401,7 @@ public class Bridge implements IPostMessage {
         listener = new ViewTreeObserver.OnGlobalLayoutListener() {
             @Override
             public void onGlobalLayout() {
+                appUrl = appUrl.replace("https://", "http://"); // 替换后的 URL
                 webviewExtension.getSession().loadUri(appUrl);
                 removeListener();
             }
@@ -1506,6 +1507,7 @@ public class Bridge implements IPostMessage {
      */
     public void setServerBasePath(String path) {
         localServer.hostFiles(path);
+        appUrl = appUrl.replace("https://", "http://"); // 替换后的 URL
         webviewExtension.getWebview().post(() -> this.webviewExtension.getSession().loadUri(appUrl));
         // webView.post(() -> webView.loadUrl(appUrl));
     }
@@ -1518,6 +1520,7 @@ public class Bridge implements IPostMessage {
     public void setServerAssetPath(String path) {
         localServer.hostAssets(path);
         // webView.post(() -> webView.loadUrl(appUrl));
+        appUrl = appUrl.replace("https://", "http://"); // 替换后的 URL
         webviewExtension.getWebview().post(() -> this.webviewExtension.getSession().loadUri(appUrl));
     }
 

+ 15 - 0
6.2.1/capacitor/src/main/java/com/getcapacitor/httpserver/SimpleHttpServer.java

@@ -33,6 +33,8 @@ import fi.iki.elonen.NanoHTTPD;
 class FileDownloadResponse extends NanoHTTPD.Response {
     public FileDownloadResponse(String mimeType, InputStream inputStream, Long length) {
         super(Status.OK, mimeType, inputStream, length);
+        addHeader("Access-Control-Allow-Origin", "*");
+        addHeader("Cache-Control", "no-cache");
     }
 }
 class NanoHttpDRequest implements WebResourceRequest{
@@ -78,6 +80,8 @@ class NanoHttpDRequest implements WebResourceRequest{
 }
 
 public class SimpleHttpServer extends NanoHTTPD {
+    private static final String TEST_HTML = "<!DOCTYPE html><html><head><title>Test</title></head><body><h1>OK</h1></body></html>";
+    
     Context context;
     Bridge bridge;
     public SimpleHttpServer(Context context, Bridge bridge) {
@@ -87,6 +91,12 @@ public class SimpleHttpServer extends NanoHTTPD {
     }
     @Override
     public Response serve(IHTTPSession session) {
+
+        // 测试用1.html
+        if ("/1.html".equals(session.getUri())) {
+            return serveTestHtml();
+        }
+
         WebResourceRequest request = new NanoHttpDRequest(session,getListeningPort());
         WebResourceResponse response = this.bridge.getLocalServer().shouldInterceptRequest(request);
         Response result = null;
@@ -102,4 +112,9 @@ public class SimpleHttpServer extends NanoHTTPD {
         }
         return result;
     }
+
+    private Response serveTestHtml() {
+        InputStream inputStream = new ByteArrayInputStream(TEST_HTML.getBytes());
+        return new FileDownloadResponse("text/html", inputStream, (long) TEST_HTML.length());
+    }
 }

+ 3 - 1
README.md

@@ -46,4 +46,6 @@ new file:   5.7.0/capacitor/src/main/java/com/getcapacitor/WebviewExtension.java
 new file:   5.7.0/capacitor/src/main/java/com/getcapacitor/cordova/CapacitorCordovaGeckoViewCookieManager.java
 new file:   5.7.0/capacitor/src/main/java/com/getcapacitor/cordova/MockCordovaGeckoviewImpl.java
 new file:   5.7.0/capacitor/src/main/java/com/getcapacitor/httpserver/SimpleHttpServer.java
-```
+```
+
+# Powered By