栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

无法在JavaFX WebView中登录Google

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

无法在JavaFX WebView中登录Google

精简版:

在加载页面之前,将以下行添加到您的main方法中:

System.setProperty("sun.net.http.allowRestrictedHeaders", "true");

长版:

我的第一个直觉是Javascript无法正常工作,但是我测试了伪邮件并正确地得到了错误:

找不到您的Google帐户

因此,似乎有些Javascript在起作用,但无法使用户继续输入密码的部分起作用。我添加了以下侦听器来侦听控制台错误,该错误在这里找到:

com.sun.javafx.webkit.WebConsoleListener.setDefaultListener(    (webView, message, lineNumber, sourceId) ->        System.out.println("Console: [" + sourceId + ":" + lineNumber + "] " + message));

这导致以下错误:

控制台:[null:0] XMLHttpRequest无法加载
https://ssl.gstatic.com/accounts/static/_/js/blahblahblah
Access-Control-Allow-Origin不允许使用
来源https://accounts.google.com。


这是一个称为“ 同源策略”的安全功能。它旨在阻止网页能够从潜在的恶意第三方网站加载脚本。

我搜索了“ Same Origin PolicyJavaFX”,发现以下问题可以解决您的问题。

具有修复程序和附加日志记录的完整应用程序为:

public class CalendarController extends Application{    @Override    public void start(Stage primaryStage) throws Exception    {        WebView browser = new WebView();        WebEngine webEngine = browser.getEngine();        com.sun.javafx.webkit.WebConsoleListener.setDefaultListener( (webView, message, lineNumber, sourceId)-> System.out.println("Console: [" + sourceId + ":" + lineNumber + "] " + message)        );        webEngine.load("http://calendar.google.com");        StackPane root = new StackPane();        root.getChildren().add(browser);        primaryStage.setScene(new Scene(root, 600, 600));        primaryStage.show();    }    public static void main(String[] args)    {        System.setProperty("sun.net.http.allowRestrictedHeaders", "true");        launch(args);    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/438038.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号