【发布时间】:2019-09-25 01:14:33
【问题描述】:
我们开发了一个通过 http/2 协议提供服务的公司 NodeJS 应用程序,我们需要通过客户端的 IP 地址来识别客户端,因为服务器需要根据客户端的 IP(基本上是一些关于电话的数据)向客户端发送事件。
我可以通过req.connection.remoteAddress成功获取客户端IP,但是有些客户端只能通过我们的代理服务器到达服务器。
我知道 x-forwarded-for 标头,但这对我们不起作用,因为代理无法修改 ssl 连接中的 http 标头。
所以我可以从客户端获取 IP 并将其发送回服务器,例如,在登录过程中。
但是,如果我没记错的话,浏览器不会向 javascript 提供该信息,因此我们需要一种方法来首先获取该信息。
研究它,我发现的唯一选择是从服务器获取,它可以告诉我从哪里到达它的 IP。
当然,通过 https 我不能因为代理。但是我可以很容易地启用一个 http 服务来服务客户端 IP。
但后来我发现浏览器会因为“混合活动内容”问题而阻止来自 https 服务页面的 http 连接。
我读过它,我发现我可以得到“mixed passive content”并且我成功地通过<img>将垃圾数据下载为图像文件,但是当我尝试使用<object>元素做同样的事情时我再次遇到“混合活动内容”块问题,即使在 MDN 文档中它说它被认为是被动。
是否有任何方法可以通过(损坏的)<img> 标签读取该数据,或者我是否遗漏了一些东西以使<object> 元素真正被动?
也欢迎任何其他实现我们目标的想法。
【问题讨论】:
标签: node.js https http-proxy x-forwarded-for