Каков наилучший способ для веб-сайта проверить, установил ли пользователь клиентское приложение? - PullRequest
2 голосов
/ 02 октября 2008

Допустим, у меня есть веб-сайт, который работает лучше, если клиент установил и вошел в настольное приложение. Я хотел бы иметь возможность сделать 2 вещи:

  • Измените веб-сайт, если они не установили приложение (чтобы им было легче найти ссылку на установщик)
  • Если приложение установлено на нескольких компьютерах, определите, с какого компьютера они просматривают

Мне бы хотелось что-то, что работает в Windows и OSX, в любом из основных браузеров. Linux это бонус.

Несколько мыслей:

  • Веб-сайты могут определять, установлен ли у вас Flash. Как это работает и может ли оно быть использовано для обеих моих целей?
  • Могу ли я просто позволить клиенту обслуживать HTTP на локальном хосте и выполнять некоторые запросы JavaScript для получения локального идентификатора? Я знаю, что поиск в Google Desktop когда-то делал что-то подобное. Это стандартная практика?

Спасибо!

Ответы [ 5 ]

4 голосов
/ 02 октября 2008

Вы можете зарегистрировать протокол из вашего настольного приложения (см. this ). Это может быть использовано, например, для открытия вашего настольного приложения с произвольными данными с веб-сайта. После этого ваше настольное приложение может отправить HTTP-запрос на ваш веб-сервер, сообщив, на каком компьютере вы находитесь.

2 голосов
/ 02 октября 2008

У вас может быть плагин для браузера (activex для IE или плагин Netscape для остальных браузеров), который может взаимодействовать с приложением. Когда веб-страница загружена, она может попытаться создать плагин и, если это удалось, она может использовать его как прокси для приложения. Если это не удается, то либо приложение не установлено, либо плагин явно отключен пользователем. В любом случае, ваш сайт должен ухудшить свою функциональность соответственно.

Обновление : Забыл ответить на ваши вопросы:

  1. Flash делает это именно так. Flash - это плагин для браузера, который создается веб-страницами.
  2. У вас может быть сгенерирован идентификатор машины во время установки приложения / плагина, и ваш плагин может передать этот идентификатор машины на веб-страницу при его создании.

По теме использования локального веб-сервера :

Я бы держался подальше от локального веб-сервера, в основном из соображений безопасности. Требуется много работы, чтобы убедиться, что ваш локальный веб-сервер достаточно заблокирован, и нет никаких XSS-уязвимостей, которые другие вредоносные сайты могут использовать, чтобы заставить его делать что-то от их имени.

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

Google Desktop Search страдает как от уязвимости безопасности XSS (хотя они это исправили), так и от ограничения того, что только один пользователь может использовать его на компьютере (я не знаю, исправили ли они это еще, хотя есть вероятность, что они сделали).

1 голос
/ 02 октября 2008

Веб-сайты могут определить, установлена ​​ли у вас Flash.

На самом деле, я считаю, что браузер может определить, установлен ли у вас плагин Flash для браузера, и веб-страницы могут предлагать варианты «установлен» и «удален», которые может выбрать браузер.

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

Можете ли вы сказать Major Security Hole ?

0 голосов
/ 02 октября 2008

«Веб-сайты могут определять, установлен ли у вас Flash. Как это работает и может ли он использоваться для обеих моих целей?» - это довольно просто, ваш браузер пытается отобразить некоторые дополнительные файлы, с некоторыми конкретными в таких форматах, как flash .swf и I, браузер не находит установки, после чего начнется загрузка, или у вас будет возможность загрузить эту программу. Flash также использует AC_RunActiveContent.js, пожалуйста, посмотрите на этот js, люди обычно размещают это на своих веб-страницах

if (AC_FL_RunContent == 0) {
    alert("This page requires AC_RunActiveContent.js.");
} else {
    AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave cabs/flash swflash.cab#version=8,0,0,0','width','981','height','635','id','build5','align','middle','src','build5','quality','high','bgcolor','#ffffff','name','build5','allowscriptaccess','sameDomain','allowfullscreen','false','pluginspage','http://www.macromedia.com/go/getflashplayer','movie','build5' ); //end AC code
}
0 голосов
/ 02 октября 2008

Если вы можете выбрать среду разработки для настольного приложения, обратитесь к AIR от Adobe. Он позволяет разрабатывать настольные приложения с использованием html / javascript, Flash или Flex.

У него есть вызовы API, которые можно использовать из флэш-приложения на основе браузера, чтобы узнать, установлено ли приложение AIR для настольного компьютера, какая версия и т. Д. Вы даже можете запустить его и передать параметры из веб-приложения в приложение для настольного компьютера.

http://www.rogue -development.com / blog2 / 2008/03 / взаимодействующий-с-с-воздух-приложение-с-а-браузерная-приложение /

...