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); } diff --git a/designer-base/src/main/java/com/fr/start/server/DesignEmbedHelper.java b/designer-base/src/main/java/com/fr/start/server/DesignEmbedHelper.java index 844fcf6019..1a1ed91398 100644 --- a/designer-base/src/main/java/com/fr/start/server/DesignEmbedHelper.java +++ b/designer-base/src/main/java/com/fr/start/server/DesignEmbedHelper.java @@ -7,6 +7,7 @@ import com.fr.design.DesignerEnvManager; import com.fr.log.FineLoggerFactory; import com.fr.stable.EncodeConstants; import com.fr.stable.StringUtils; +import com.fr.third.guava.collect.Sets; import com.fr.third.springframework.web.SpringServletContainerInitializer; import com.fr.third.springframework.web.context.support.AnnotationConfigWebApplicationContext; import com.fr.workspace.WorkContext; @@ -16,7 +17,8 @@ import org.apache.catalina.loader.WebappLoader; import org.apache.catalina.startup.Tomcat; import org.apache.catalina.webresources.StandardRoot; import org.apache.tomcat.websocket.server.WsSci; -;import java.io.File; + +import java.io.File; import java.nio.file.Files; import java.nio.file.LinkOption; import java.nio.file.Path; @@ -25,6 +27,8 @@ import java.util.HashSet; import java.util.Properties; import java.util.Set; +; + /** * 内置服务器工具类 * @@ -100,6 +104,7 @@ public class DesignEmbedHelper { Set> classes = new HashSet>(); classes.add(EmbedWebApplicationInitializer.class); context.addServletContainerInitializer(initializer, classes); + context.addServletContainerInitializer(new WsSci(), Sets.newHashSet(WebSocketEndpoint.class)); } /**