我在JSP中为我们的客户建立了一个系统。现在,我想收集具有用户权限的客户端信息。以下信息将从我们的客户那里得到。
1. UUID 2. Hard disk serial number 3.Ip Address 4. MAC ADdress 5.PC AND OS info
目前,这是用activeX对象完成的。但该系统仅在internet explorer浏览器中运行。我想改变系统,使它将是独立的浏览器。
我认为有几个architecture.Let me允许简短地讨论这些体系结构:
第一个体系结构(通过JavaScript):
当客户端访问我们的网页时,会打开一个弹出,说明“您允许运行此脚本吗?”如果用户允许,那么脚本将驻留在客户端pc中。该脚本将负责获取客户端的信息,pc和发送信息到我们的服务器。您可以始终考虑客户端将允许运行脚本,就像我们将指示客户端运行脚本一样。
第二体系结构(通过jar文件)
jar文件将驻留在每个客户端PC中。该文件将负责从客户端pc获取信息,并将信息发送到我们的服务器。每个客户都会得到一个软件。安装该软件后,jre将被安装,一个jar文件将驻留在特定的目录中。另一种在客户端pc中驻留jar文件的方法,当客户端访问我们的web应用程序时,是否可以将jar文件推送到客户端pc?我们希望得到他们的许可。。
第三个体系结构(通过dll文件):
用C#编写的dll文件将驻留在客户端pc中。这个dll文件将负责从客户端pc获取信息。当客户第一次访问我们的web应用程序时,他们会问他们是否愿意给予他们运行dll的权限?如果给予许可,则dll文件将保留客户端pc,并负责提供客户端pc的信息。
,上面的架构有意义吗?,你能告诉我上面的架构的优点和缺点吗?如果上述架构/方法无法完成必须由我完成的任务,我可以采取哪些步骤来获取客户端信息?
我在google上对这个话题做了很多研究。我所了解到的是,现代浏览器限制从客户端获取信息。但我想得到客户的宝贵许可。
我试过的是:
我尝试使用几个js库来完成这个任务,比如clientjs、nodejs。但是clientjs无法提供一些信息,如UUID、硬盘序列号。我编写了一个java代码(桌面环境),它可以接收pc的所有信息。但是我不能从jsp页面调用这个代码。我还可以编写一个C#代码,它可以提供客户端信息的输出。但我不能从我的jsp页面上调用它。
最后注:
希望我想说的都清楚了。请帮助我完成这个任务,或者至少给我一些关于我如何做它的想法/建议!
最后一个提示是,我们的系统正在使用ActiveX收集用户的信息。这是唯一的IE绑定。我只想让它独立于浏览器。
发布于 2017-09-24 21:45:38
不能只在浏览器中执行dll方法(这是出于安全原因)。为了在浏览器中执行一些编译后的代码,您必须使用一个插件。
这个问题有几个解决办法。经过一些链接后,似乎可以通过以下选项。
备选案文1:
备选案文2:
为那些浏览器创建插件是使用NPAPI编写的。如何编写浏览器插件?
备选方案3:
编写签名的小程序来调用从html或任何web应用程序运行的dll。它几乎可以在所有浏览器上运行。下面是示例的链接。
备选案文4:
使用EdgeJS可以完成相同的任务。您可以从加载在前端javascript中的DLL (在clientside javascript中加载dll )找到Call函数的答案。诀窍是在V8和CLR之间封送函数,当事件触发时,将消息发送给javascript。
从加载在前端javascript中的DLL调用函数(在客户端javascript中加载dll )
备选方案5:
构建一个C#应用程序(仅在使用.NET时使用windows,所有平台(如果您只使用CoreCLR)侦听滑动和触发事件,以便在所有连接的websockets上发送数据。
备选案文6:
您可以用C#编写客户端应用程序,该应用程序连接到JS,然后传输数据。WebSocket可以检查特定的数据块,并以您希望的方式处理它。
我用了我在一个使用指纹扫描仪的项目中所描述的方式。效果很好!如果你加一点密码,就更好了!
备选案文7:
最后一句话:
ActiveX只是在IE中实现浏览器插件的一种方法。所有其他浏览器都使用不同的插件接口。然后,如果用户将在浏览器中安装您的插件-这个插件将从JS中获得,您可以使用它在dll中执行一些功能。
https://stackoverflow.com/questions/46387516
复制相似问题