Была такая же проблема, и я думаю, что нашел критическую точку: сбой целостности внешнего скрипта / ссылки.Это не проблема браузера платформы, JavaFX (OpenJFK) опирается на встроенный механизм webkit.
Регрессия произошла между версией 40 и версией 172 в Windows JDK 8. Это нормально работает с Oracle JDK 9.0.4 Это не такработа с Oracle JDK 11
Подробнее: https://github.com/mguessan/davmail/issues/12
Проблема похожа на: Javafx - открыть страницу login.microsoftonline.com в компоненте веб-просмотра
=> Обновленный ответ: реализовано для переопределения содержимого форм Microsoft и отключения проверки целостности.Это не исправление ошибки webkit, а обходной путь
try {
URL.setURLStreamHandlerFactory(new URLStreamHandlerFactory() {
@Override
public URLStreamHandler createURLStreamHandler(String protocol) {
if ("https".equals(protocol)) {
return new sun.net.www.protocol.https.Handler() {
@Override
protected URLConnection openConnection(URL url, Proxy proxy) throws IOException {
System.out.println("openConnection " + url);
if (url.toExternalForm().endsWith("/common/handlers/watson")) {
System.out.println("Failed: form calls watson");
}
final HttpsURLConnectionImpl httpsURLConnection = (HttpsURLConnectionImpl) super.openConnection(url, proxy);
if ("login.microsoftonline.com".equals(url.getHost())
&& "/common/oauth2/authorize".equals(url.getPath())) {
return new URLConnection(url) {
@Override
public void connect() throws IOException {
httpsURLConnection.connect();
}
public InputStream getInputStream() throws IOException {
byte[] content = readFully(httpsURLConnection.getInputStream());
String contentAsString = new String(content, "UTF-8");
System.out.println(contentAsString);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
baos.write(contentAsString.replaceAll("integrity", "integrity.disabled").getBytes("UTF-8"));
return new ByteArrayInputStream(baos.toByteArray());
}
public OutputStream getOutputStream() throws IOException {
return httpsURLConnection.getOutputStream();
}
};
} else {
return httpsURLConnection;
}
}
};
}
return null;
}
});
} catch (Throwable t) {
System.out.println("Unable to register custom protocol handler");
}