Как запретить доступ к веб-странице из сети javafx

В настоящее время я работаю над проектом киоска в javafx. Он использует WebView/WebEngine. Мне нужно разрешить администратору киоска запрещать доступ к определенным веб-сайтам, я знаю, как проверить, совпадают ли они, но как мне подключить веб-движок, чтобы он сообщал мне, когда переходит на страницу. киоск проверяет его, а затем я могу перенаправить его на URL-адрес заблокированной страницы. Как я могу это сделать


person Chris    schedule 20.12.2015    source источник


Ответы (1)


Добавьте прослушиватель в locationProperty() в WebView WebEngine и в прослушивателе проверьте, соответствует ли новое местоположение вашему черному списку.

Например (в Java 8):

WebEngine engine = webview.getEngine();
engine.locationProperty().addListener((observable, oldValue, newValue) -> {
    if (newValue.contains("badsite")) { // replace with your URL checking logic
        Platform.runLater(() -> {
            // Load your block page url
            engine.load("http://example.com"));
        }
    }
});

Согласно этому ответу на аналогичный вопрос, JVM может аварийно завершить работу, если вызов engine.load() не заключен в Platform.runLater().

person nathanielw    schedule 20.12.2015
comment
Действительно ли это гарантирует, что веб-страница никогда не будет загружена? Даже ненадолго? - person mipa; 20.12.2015
comment
@mipa Хороший вопрос. Я только что проверил с помощью Wireshark, и это не предотвращает отправку HTTP-запроса GET на сервер badsite. Отобразит ли WebView ответ, я не уверен. Я не знаю никаких других способов перенаправить веб-просмотр без использования надлежащего брандмауэра/прокси. - person nathanielw; 21.12.2015