В настоящее время я работаю над проектом киоска в javafx. Он использует WebView/WebEngine. Мне нужно разрешить администратору киоска запрещать доступ к определенным веб-сайтам, я знаю, как проверить, совпадают ли они, но как мне подключить веб-движок, чтобы он сообщал мне, когда переходит на страницу. киоск проверяет его, а затем я могу перенаправить его на URL-адрес заблокированной страницы. Как я могу это сделать
Как запретить доступ к веб-странице из сети javafx
Ответы (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
Действительно ли это гарантирует, что веб-страница никогда не будет загружена? Даже ненадолго?
- person mipa; 20.12.2015
@mipa Хороший вопрос. Я только что проверил с помощью Wireshark, и это не предотвращает отправку HTTP-запроса GET на сервер
badsite
. Отобразит ли WebView ответ, я не уверен. Я не знаю никаких других способов перенаправить веб-просмотр без использования надлежащего брандмауэра/прокси.
- person nathanielw; 21.12.2015