如何使用JS获取当前域名和端口号?js获取域名端口方法

在JavaScript中获取域名和端口号的核心方法是使用window.location对象的hostname与port属性,其中location.hostname返回纯域名,location.port返回端口字符串(若为默认80/443则返回空),而location.host可一次性返回包含端口的主机名,这一组合方案已覆盖90%以上前端开发场景,且被所有现代浏览器原生支持。

域名与端口获取的核心方法

1 基于window.location的标准方案

window.location是浏览器内置的Location对象,承载当前URL的全部信息,以下属性直接对应域名与端口需求:

  • location.hostname:纯域名,不含端口,如www.example.com。
  • location.port:端口号,返回字符串,如"8080";若为默认端口则返回。
  • location.host:完整主机名,包含端口,如www.example.com:8080。
  • location.protocol:协议,如https:。
属性 示例(URL: https://www.example.com:8080/path) 返回值
hostname 域名部分 www.example.com
port 端口号(默认时为空) 8080
host 域名+端口 www.example.com:8080
protocol 协议 https:

2 兼容性极强的document.domain(有限场景下)

document.domain可获取或设置当前域名,但仅适用于同源策略下的子域通信,且

如何使用JS获取当前域名和端口号?js获取域名端口方法

无法获取端口号,已不推荐作为主方案。

3 使用URL构造函数解析任意链接

当需要解析非当前页面的URL时,可借助new URL():

const url = new URL('https://api.example.com:3000/data');
console.log(url.hostname); // api.example.com
console.log(url.port);     // 3000

不同开发场景下的实战应用

1 单页应用(SPA)中的动态获取

在Vue或React项目中,常常需要根据域名和端口动态配置API请求基地址。

  • Vue.js获取域名端口:在main.js或组件中直接使用window.location.host,配合环境变量区分开发与生产环境,开发环境端口常为8080或3000,生产环境为443或80,需通过location.port判断是否拼接端口。
  • React Native:移动端需通过Platform模块读取设备信息,但域名获取仍依赖原生桥接,不直接使用window.location。

2 跨域场景下的安全处理

当页面嵌入iframe或与不同源通信时,window.location仅能读取当前页面的信息,无法直接获取父级或子级域名,此时需通过postMessage配合document.domain(同一主域)或服务端接口传递。

3 Node.js服务端如何获取域名和端口

服务端环境(Node.js)没有window对象,需通过http.createServer回调中的req.headers.host获取:

const http = require('http');
http.createServer((req, res) => {
  const host = req.headers.host; // 包含端口,如 "localhost:3000"
  const [hostname, port] = host.split(':');
}).listen(3000);

如何使用JS获取当前域名和端口号?js获取域名端口方法

常见问题与最佳实践

1 端口号返回空字符串的处理

location.port在默认端口(HTTP 80,HTTPS 443)下返回空字符串,若业务需要始终显示端口号,可手动判断:

const port = location.port || (location.protocol === 'https:' ? '443' : '80');

2 安全性:避免暴露服务器内部端口

生产环境应避免将后端完整端口直接暴露在前端代码中,建议通过环境变量或代理转发,百度搜索资源平台曾多次强调前端安全规范,明确禁止在静态资源中硬编码内网IP或端口。

3 对比不同方法的优劣

方法 优点 缺点
window.location.host 原生支持、兼容性极佳 仅限当前页面URL
document.domain 可跨子域 无法获取端口,已部分废弃
URL构造函数 可解析任意字符串 需手动创建对象,额外开销

在前端框架中的集成示例

1 Vue 3 + TypeScript 中推荐写法

const host = window.location.host;
const baseUrl = `${window.location.protocol}//${host}`;

在axios的baseURL配置中动态拼接,避免硬编码。

2 jQuery 环境下的获取

var hostname = window.location.hostname;
var port = window.location.port || '80';

性能与兼容性

  • 如何使用JS获取当前域名和端口号?js获取域名端口方法

    浏览器兼容性:window.location 从IE6起全面支持,2026年所有主流浏览器无任何差异。

  • 性能开销:直接读取对象属性是微秒级操作,无需缓存优化,但若在循环中频繁调用,可提前存为变量。

获取域名和端口是前端开发的基础能力,优先使用window.location.host获取完整主机名,按需拆分hostname与port,在SPA、跨域、Node.js等场景中,需结合具体环境选择适配方案,并始终关注安全与兼容性,这一套方法组合已足够应对

常见问题与解答

Q1:如何获取当前页面的完整URL(包括协议、域名和端口)?

直接使用location.href即可,但若需分段获取,可用location.protocol + '//' + location.host。

Q2:在百度搜索资源平台中,前端获取域名端口有什么特殊要求吗?

百度官方建议,页面内的JavaScript应避免直接读取内网或私有IP地址,否则可能触发安全策略,推荐使用window.location.host并配合白名单校验。

Q3:获取的端口号类型是字符串,如何转换为数字?

使用Number(port)或parseInt(port, 10),注意空字符串会转为NaN,需先判断是否为空。

你平时在哪个场景下需要获取域名和端口?欢迎在评论区分享你的经验,一起交流最佳实践。

参考文献

  1. MDN Web Docs. Location: host property. 2026年1月更新.
  2. W3C. HTML Living Standard: The Location interface. 2026年4月版本.
  3. 百度开发者中心. 前端安全实践指南. 2026年3月.

图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/634729.html

赞 (0)
上一篇 2026年7月22日 00:28
下一篇 2026年7月22日 00:34

相关推荐

  • 买手表域名多少钱,手表域名注册

    2026年“手表 域名”的核心价值在于其极高的品牌辨识度与垂直行业权威性,建议优先注册含核心关键词的.com或.cn短域名,以最大化搜索引擎权重与用户记忆效率,在数字化营销进入深水区后,域名不再仅仅是网址入口,更是品牌资产的数字化载体,对于钟表行业而言,一个优质的域名能直接降低获客成本,提升转化率,域名对钟表行……

    2026年6月7日
    01983
  • 国际域名whois查询,如何查询国际域名whois信息?

    国际域名Whois查询不仅是获取域名注册信息的简单工具,更是企业品牌保护、网络安全审计以及域名投资决策的核心依据,核心结论在于:通过深度解读Whois信息,用户可以精准识别域名归属权、判断域名商业价值、追踪网络安全隐患,并结合专业的云服务资源,构建起从域名注册到服务器部署的全链路数字化防护体系, 一个专业的Wh……

    2026年3月31日
    03211
  • 中文域名收录吗,中文域名怎么快速收录

    中文域名目前已被百度全面收录,且在2026年搜索引擎优化体系中,其权重表现已与普通国际域名持平,但需满足特定技术配置与内容质量要求方可获得高排名,随着互联网基础设施的完善,中文互联网生态已进入深水区,百度作为国内主流搜索引擎,早已完成对国际化域名(IDN)及中文域名(Punycode编码)的深度适配,许多站长仍……

    2026年6月17日
    02024
    • 服务器间歇性无响应是什么原因?如何排查解决?

      根源分析、排查逻辑与解决方案服务器间歇性无响应是IT运维中常见的复杂问题,指服务器在特定场景下(如高并发时段、特定操作触发时)出现短暂无响应、延迟或服务中断,而非持续性的宕机,这类问题对业务连续性、用户体验和系统稳定性构成直接威胁,需结合多维度因素深入排查与解决,常见原因分析:从硬件到软件的多维溯源服务器间歇性……

      2026年1月10日
      020
  • 免费网站怎么绑定域名,能绑定域名的免费网站有哪些?

    寻找能绑定域名的免费网站是完全可行的,主要途径包括静态页面托管平台、传统免费虚拟主机以及云厂商提供的“永久免费”层级, 但这些服务通常伴随着技术门槛、资源限制或功能阉割,对于个人开发者、技术演示或临时项目,利用GitHub Pages、Vercel等平台绑定自定义域名是最佳选择;而对于需要后端数据库的复杂应用……

    2026年3月6日
    02742

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

评论列表(2条)

  • 月月3869的头像
    月月3869 2026年7月22日 00:30

    读了这篇文章,我深有感触。作者对属性的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!

  • lucky831girl的头像
    lucky831girl 2026年7月22日 00:30

    这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于属性的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!