js获取计算机所在域名

云服务器

js获取计算机所在域名

2026-01-24 02:00


JavaScript获取计算机域名的方法包括浏览器location对象、Node.js os模块处理,结合字符串分割与跨域技术解决多场景需求。

JS获取计算机所在域名的实践解析

域名识别的需求场景

在现代Web开发中,动态获取客户端所在域名的需求常常出现在多租户系统、跨域资源管理、网络请求优化等场景。例如在云存储服务中,根据不同的子域名分配服务集群;再比如在调试工具中,需要展示当前页面的实际访问域名。JavaScript虽然存在浏览器安全限制,但仍提供了多种实现途径。

浏览器环境基础方法

在浏览器环境中,最直接的实现方式是通过window对象提供的URL信息:

// 获取当前页面的完整域名
const fullDomain = window.location.href;
console.log("访问地址完整:" + fullDomain);

// 提取域名不带路径
const hostDomain = window.location.host;
console.log("域名主体:" + hostDomain);

// 仅获取主域名部分
const hostname = window.location.hostname;
console.log("域名地址:" + hostname);

// 获取协议类型
const protocol = window.location.protocol;
console.log("协议类型:" + protocol);

代码执行后,会输出类似https://example.com/path?query=1的完整URL,但host属性会显示example.com,hostname会得到example.com,protocol显示https:。这些API能帮助开发者快速获得域名相关的基本信息。

处理特殊域名结构

对于包含子域名的场景,需要进行字符串拆分处理:

function extractMainDomain(hostname) {
  const parts = hostname.split('.');
  if (parts.length === 1) {
    return hostname;
  } else if (parts.length === 2) {
    return parts.join('.');
  } else {
    return parts.slice(1).join('.');
  }
}

const mainDomain = extractMainDomain(window.location.hostname);
console.log("主域名:" + mainDomain);

该函数通过拆分符号点,根据域名层级数确定主域名。比如对于sub.login.example.com这类多级子域名,会返回example.com。需要注意的是,该算法在国际域名(如.中国)等特殊后缀的情况下需要额外处理。

Node.js环境解决方案

在服务端Node.js环境中,获取本机域名需要使用操作系统相关模块:

const os = require('os');
const domain = os.hostname();
console.log("本机域名:" + domain);

通过os模块的hostname方法可以获取本机的DNS名称。但需注意该方法的执行结果取决于当前计算机在局域网中的配置情况,可能返回类似LAPTOP-ABC12345的设备标识。

跨域访问的解决方案

由于浏览器的安全策略限制,JavaScript无法直接获取用户设备所在的内网域名(如intranet.local),但可以组合使用多种技术实现间接获取:

服务器中转方案

通过服务端接口查询客户端的IP地址,并反向解析成域名:

  • 前端触发GET /get-client-domain请求
  • 服务端使用IP解析库获取来源域名
  • 返回结果供JavaScript调用

该方案需要服务端具备IP地址查询能力,且客户端需允许服务器接收Referer信息。

JSONP技术

当需要跨域获取域名信息时,可以在请求服务器接口时:

  1. 服务器返回JSONP包裹的域名信息
  2. 浏览器通过 © 必安云.
Powered by ©智简魔方