Отправка данных напрямую из браузера в приложение Java Desktop - PullRequest
0 голосов
/ 06 мая 2018

Я создаю веб-приложение, используя TypeScript в качестве языка сценариев на стороне клиента. Другие технологии, которые я использую: Spring Boot, PostgreSQL и Angular. Когда пользователь нажимает кнопку на веб-сайте, мое уже запущенное настольное приложение Java («независимое» от веб-приложения, а не от сервера веб-приложения) должно получить данные, отправленные из веб-приложения, и затем предложить пользователю импортировать их в Настольное приложение.

Как это можно сделать? Есть ли примеры кодов?

Могу ли я запустить простой сервер прослушивания в приложении для настольных компьютеров, ожидая, пока клиент (браузер) отправит полезную нагрузку данных импорта на сервер прослушивания (независимым от платформы способом)?

Обратите внимание, что это отличается от приложения Desktop для загрузки данных из интернет-ресурса, поскольку ресурс должен определяться щелчком в самом браузере , а не через интерфейс приложения Desktop.

Регистрация моего Java приложения для настольного компьютера по схеме URI позволяет мне запускать только приложение для настольного компьютера с пользовательским URI в качестве параметра, и это также только Windows, что поэтому не удовлетворительное решение.

1 Ответ

0 голосов
/ 31 мая 2018

Я понимаю ваши настройки следующим образом:

Браузер <- HTTP / HTTPS через Интернет -> SpringBoot

Веб-страница, отображаемая в браузере, должна взаимодействовать с локальным настольным приложением.

Решение состоит в том, чтобы установить HTTP-соединение между вашей веб-страницей и настольным приложением следующим образом:

  • ваше настольное приложение должно включать встроенный контейнер сервлета, как, например, undertow , который привязывает сокет сервера к 127.0.0.1:yourPort
  • для встроенного контейнера сервлета требуется CORS Filter , поскольку источник веб-страницы, безусловно, отличается от 127.0.0.1.
  • Веб-страница просто открывает соединение с помощью XMLHttpRequest, например,
    
    var req = new XMLHTTPRequest();
    req.open("POST", "<a href="http://127.0.0.1:yourPort" rel="nofollow noreferrer">http://127.0.0.1:yourPort</a>");
    req.setRequestHeader("content-type", "application/x-www-form-urlencoded");
    req.send("payload="+ myPayload);
    

Когда браузер установил HTTPS-соединение с сервером SpringBoot, у вас есть проблема с тем, что браузер может отображать «Предупреждение о смешанном контенте», когда защищенный веб-контекст (ваша веб-страница) обращается к ресурсу через HTTP.

К счастью, в последнее время современные браузеры, такие как Chrome, Firefox, Edge и Safari, реализуют рабочий проект W3C Secure Contexts и, таким образом, считают доступ к 127.0.0.1 потенциально надежным: предупреждение о смешанном контенте отсутствует.

Тем не менее, если вы вводите это в эксплуатацию, вы должны знать, что ваше настольное приложение теперь уязвимо для атак XSS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...