From 304978287a0af064d3ba88d5d97730651f1c76d6 Mon Sep 17 00:00:00 2001 From: vito Date: Wed, 18 Dec 2024 16:49:41 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-144167=20=E5=8F=96=E6=95=B0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E4=B8=AD=E5=BF=83=E9=80=82=E9=85=8D=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89ssl=E8=AF=81=E4=B9=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/tabledata/datacenter/DCTableDataPane.java | 2 +- .../main/java/com/fr/design/jxbrowser/JxEngine.java | 10 +++++++++- .../main/java/com/fr/design/jxbrowser/JxUIPane.java | 6 ++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/tabledata/datacenter/DCTableDataPane.java b/designer-base/src/main/java/com/fr/design/data/tabledata/datacenter/DCTableDataPane.java index 61cf5aefbe..59f9e1387b 100644 --- a/designer-base/src/main/java/com/fr/design/data/tabledata/datacenter/DCTableDataPane.java +++ b/designer-base/src/main/java/com/fr/design/data/tabledata/datacenter/DCTableDataPane.java @@ -31,7 +31,7 @@ import static com.fr.design.ui.ModernUIConstants.SCHEME_HEADER; */ public class DCTableDataPane extends AbstractTableDataPane { - private static final JxEngine JX_ENGINE = JxEngine.newInstance(false); + private static final JxEngine JX_ENGINE = JxEngine.newInstance(true); private static final String DATA_CENTER = "dc"; private static final String DATA_CENTER_HELPER = "dcHelper"; diff --git a/designer-base/src/main/java/com/fr/design/jxbrowser/JxEngine.java b/designer-base/src/main/java/com/fr/design/jxbrowser/JxEngine.java index 6458769fcb..78c5e7a832 100644 --- a/designer-base/src/main/java/com/fr/design/jxbrowser/JxEngine.java +++ b/designer-base/src/main/java/com/fr/design/jxbrowser/JxEngine.java @@ -51,7 +51,6 @@ public class JxEngine { EngineOptions.Builder builder = EngineOptions .newBuilder(RenderingMode.HARDWARE_ACCELERATED) .addSwitch("--disable-google-traffic") - .addSwitch("--disable-web-security") .addScheme(Scheme.of(ModernUIConstants.EMB_TAG), new NxInterceptRequestCallback(this::getComponent, this::getParameterMap)); if (disableWebSecurity) { @@ -144,6 +143,15 @@ public class JxEngine { return ENGINE.getValue(); } + /** + * 是否禁用安全属性 + * 注:对客户端来说,安全属性可以忽略 + * + * @return 是否禁用 + */ + public boolean isDisableWebSecurity() { + return disableWebSecurity; + } /** * 添加XHR请求头 diff --git a/designer-base/src/main/java/com/fr/design/jxbrowser/JxUIPane.java b/designer-base/src/main/java/com/fr/design/jxbrowser/JxUIPane.java index 8de367df08..1b479bd95c 100644 --- a/designer-base/src/main/java/com/fr/design/jxbrowser/JxUIPane.java +++ b/designer-base/src/main/java/com/fr/design/jxbrowser/JxUIPane.java @@ -13,6 +13,7 @@ import com.fr.stable.collections.combination.Pair; import com.fr.stable.os.OperatingSystem; import com.fr.web.struct.AssembleComponent; import com.teamdev.jxbrowser.browser.Browser; +import com.teamdev.jxbrowser.browser.callback.CertificateErrorCallback; import com.teamdev.jxbrowser.browser.callback.InjectJsCallback; import com.teamdev.jxbrowser.event.Observer; import com.teamdev.jxbrowser.frame.Frame; @@ -81,6 +82,11 @@ public class JxUIPane extends BasicPane { } initDebugIfNeeded(); browser = jxEngine.getEngine().newBrowser(); + if (jxEngine.isDisableWebSecurity()) { + // 忽略证书验证,兼容有些情况下自定义证书与实际域名不匹配的情况。 + // 虽然不是个正确的方式,但真有这么用的还是兼容一下 + browser.set(CertificateErrorCallback.class, (params, action) -> action.allow()); + } add(BrowserView.newInstance(browser), BorderLayout.CENTER); }