【问题标题】:Javascript - Simply identify on which network the browser is connectedJavascript - 只需识别浏览器连接的网络
【发布时间】:2026-02-14 02:40:01
【问题描述】:

我设置了一个节点 js Web 服务器,它在 JSON 文件中提供图像链接。一个链接是指互联网上的图像,另一个链接是指我的家庭服务器中的本地目录。

网络服务器在线,而不是在我的家庭服务器上。 出于带宽使用目的,网络服务器仅提供图像链接。如果客户端通过我的家庭连接连接,它使用本地链接,如果不是,它使用互联网链接。

目前,我在客户端提供一个包含链接的 JSON 文件,并始终选择 Internet 文件,因为我不知道如何让客户端了解他在我的本地网络上。

有什么东西存在吗?我已经研究过获取路由器的 mac 地址(第一跳)、网络 ssid ……但似乎仅使用 JavaScript 无法实现。

所以,基本上,这是我的设置:

家庭网络:

  • 家庭服务器(本地存储的图像)
  • 通过此连接连接的潜在客户端

网络托管内容:

  • Web 服务器(节点 js)
  • FTP(存储的图像)
  • 潜在客户端已连接

在任何情况下,客户端都需要互联网连接,因为节点服务器在线。但是,如果客户端与本地家庭服务器在同一个(我的本地网络)网络上,他应该使用本地链接来获取图像。

我需要以下两种解决方案之一:

  • 客户端知道他是否在我的本地网络上,然后拿起 很好的链接
  • web服务器知道客户端来自哪里,直接服务 良好的链接(因此,客户端没有问题)。那个问题是我的网络服务器没有托管在我的家庭网络上。

【问题讨论】:

  • 本地客户端的IP是否以192.开头?
  • @JuniusRendel:node.js 是一种基于 JS 的服务器语言。
  • @Cerbrus 我不傻,但是:“我不知道如何让客户明白他在我的本地网络上。”
  • OP 可以轻松设置一个布尔值以使客户端选择本地 url。
  • 是的,事实上,我不应该提到 node-js,因为我正在寻找客户端解决方案......客户端 IP 可以以任何开头,因为这是一个 Web 托管服务器,它可以从任何地方到达。

标签: javascript jquery node.js network-programming


【解决方案1】:

您将不得不在服务器端编写一些东西才能使其正常工作。

只有服务器可以判断客户端是否与服务器在同一个网络上。客户端 JS 根本无法访问网络信息。

你会这样做:

在客户端请求时,服务器:

  • 检查客户端的连接 IP 是否为本地 IP。
  • 如果是这样,请设置客户端可以读取的某种布尔值。
  • 然后客户端根据该布尔值选择本地或远程 url 集。

选择要包含在您的页面中的网址稍微简单一些:

在客户端请求时,服务器:

  • 检查客户端的连接 IP 是否为本地 IP。
  • 如果是这样,在请求的网页中包含本地 URL。否则,请包含远程 URL。

【讨论】:

  • 服务器端对我来说似乎更有趣。由于网络服务器不在我的本地网络上,是否可以将客户端的 IP 与我的家庭服务器 IP 进行比较? (所以,知道网络服务器对于任何人来说都是“本地的”)
  • 等等,什么?那么,您有一个托管该站点的 Web 服务器,以及一个存储图像等内容的家庭服务器?那么你最好将连接IP与你的IP进行比较,确实如此。从网络上的几个不同设备连接到您的服务器,以查看它们 IP 的相似之处。
  • 没错!还有一个 FTP 服务器,用于非本地客户端。
  • 那么我的回答中描述的“流程”应该可以解决问题。
  • 我会去服务器端比较客户端IP和本地图片存储服务器的IP!