是一种收集硬件信息以唯一标识向 Java servlet 发出请求的特定设备(不是类别)的方法吗?我搜索了这个,但我不认为有一种方法(“用户代理” header 可用于某些信息,但它仅标识一组特定的设备并且它是不够的)。
最佳答案
此信息在 HTTP 请求中的任何地方都不可用。远程地址(客户端 IP)和用户代理(浏览器假装的字符串)是您可以根据 HTTP 请求提取的最接近的唯一标识符。即便如此,这些信息也不可靠。例如,客户端可以使用匿名代理。例如,客户端可以更改浏览器的用户代理字符串。
你基本上需要在客户端收集这些信息,然后自己将其作为请求参数发送到服务器端。然而,反过来,您收集此信息的可用方式有限。例如,出于安全原因,JavaScript 不允许这样做。您最接近的赌注是签名(!)Java Applet或 Web Start应用。这允许您让客户端下载一些 Java 代码并在本地执行它。但这也不总是可靠的。例如,客户端可以破解 applet/webstart 代码和/或篡改 applet 和服务器之间的 HTTP 流量。
另一种方法是只引入一个注册/授权/认证系统,其中客户端需要通过有效登录自行提供唯一标识符。这不仅更简单,而且更健壮。
关于java - 能否在与 Java servlet 交互的设备上获取硬件信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9891453/