浏览器在服务器端的唯一字段

执行以下操作:

require ("http").createServer (function (req, res) { /* get the browser unique id */ }).listen (8080); 

req对象是否包含每个浏览器会话唯一的内容?

例如:有两个浏览器选项卡,唯一字段应该是相同的。 但是从两个不同的浏览器访问相同的页面(应该有两个不同的值:每个浏览器一个)。

我想这样的字段是preqnd在req.socket对象。 当使用socket.io库我有一个client.id字段。

我可以做到这一点,而无需在客户端设置Cookie?

       

网上收集的解决方案 "浏览器在服务器端的唯一字段"

正如Node.JS API文档中所写, req参数用于访问标题,数据和响应状态(请参阅HTTP响应代码)。

检查每个浏览器的req对象太困难了,因为有很多属性和方法(这里有很多讨论)。 但是,如果你要检查标题( req.headers ),你会发现req对象之间的差别很小。 例如,我在Firefox中打开了一个新的Google Chrome Icognito窗口和一个新的专用窗口,这些标题是:

 { host: 'lvh.me:8000', 'user-agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0', accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'accept-language': 'en-US,en;q=0.5', 'accept-encoding': 'gzip, deflate', connection: 'keep-alive' } { host: 'lvh.me:8000', connection: 'keep-alive', accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36', 'accept-encoding': 'gzip,deflate,sdch', 'accept-language': 'en-US,en;q=0.8' } 

因此,两个对象中唯一相同的属性是hostconnection 。 但是,如果您使用不同的子域调用服务器,主机可能会有所不同(例如: www

如果你可以检查整个对象,可能你会发现更多关于每个浏览器。