Подводные камни доступа к веб-серверу на 127.0.0.1 из js с общедоступного сайта - PullRequest
3 голосов
/ 02 декабря 2008

Я подумываю о том, чтобы изучить идею запуска нашего клиентского программного обеспечения в качестве службы на высоком порту и прослушивания простых запросов HTTP GET от 127.0.0.1. Теория заключается в том, что я смогу получить доступ к этому сервису через js с веб-страницы, которая обслуживается с моего сайта.

1) Пользователь устанавливает клиентское программное обеспечение, которое устанавливается в качестве службы и ожидает аутентифицированных запросов на 127.0.0.1:8080

.

2) Когда пользователь нажимает на мою домашнюю страницу, js на странице отправляет запрос xhtml на номер 127.0.0.1:8080 и запрашивает статус

3) Затем домашняя страница отправляет очередной js-запрос обратно на мой веб-сервер, отправляя полученный статус.

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

Кто-нибудь делал это и какие есть потенциальные подводные камни? Будет ли это даже работать?

Ответы [ 4 ]

3 голосов
/ 02 декабря 2008

Я не вижу никаких потенциальных ловушек. Однако у меня есть пара моментов.

1 / Возможно, вы хотите убедиться, что ваша служба принимает входящее соединение только с локального компьютера (127.0.0.1). В противном случае любой может посмотреть на ваш JavaScript и понять, что он говорит с [your-ip]: 8080. Затем они могут сами попробовать это с удаленного сайта (дыра в безопасности).

2 / Я бы не использовал порт 8080, поскольку он обычно используется для других целей (альтернативных HTTP-серверов и т. Д.). Сделайте его настраиваемым и выберите хорошее высокое значение случайного типа.

3 / Я не уверен, что вы пытаетесь сделать с пунктом 3, но я думаю, вы пытаетесь отправить статус обратно пользователю. В таком случае, почему бы JavaScript на вашей домашней странице просто не получить статус за один сеанс и вывести / обновить HTML, который будет представлен пользователю? Ваш "очередной запрос js обратно на мой веб-сервер" не имеет смысла для меня.

1 голос
/ 02 декабря 2008

Возможно, вам не удастся выполнить xml http-запрос к 127.0.0.1, поскольку XMLHTTPRequest обычно ограничен тем же доменом, с которого обслуживается основное содержимое. Я не уверен, применяется ли это ограничение, если сервер находится на компьютере клиента. Тем не менее, вы все равно можете создать тег <script>, в котором src указывает на 127.0.0.1, и заставить веб-сервер возвращать часть Javascript для запуска. Если вам нужен только простой ответ, это может сработать.

0 голосов
/ 02 декабря 2008

У вас могут быть проблемы с шагом 1 (клиент устанавливает себя) в зависимости от вашей целевой пользовательской базы.

Вам потребуется индивидуальная установка для каждой поддерживаемой среды (Win2K, Vista, Linux, MAC OS 9.0 / 10.0 и т. Д.). Если ваш пользователь находится на заблокированном рабочем компьютере, это просто недопустимо. Для некоторых пользователей это может выглядеть ужасно похоже на троян, если вы явно не укажете, что будете устанавливать программное обеспечение, работающее как служба. Вы не упомянули процедуру unistall. Пользователи негодуют на программное обеспечение, подобное «Adobe», которое устанавливает себя и не предоставляет никаких разумных опций удаления

В остальном подход обоснован, и есть пара коммерческих продуктов, которые используют именно этот подход!

0 голосов
/ 02 декабря 2008

Я думаю, что вам гораздо лучше избегать реализации логики приложения в JavaScript и html. Когда пользователь нажимает кнопку на веб-странице, JavaScript должен отправить запрос в ваш сервис и позволить ему выполнить остальную часть работы.

...