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

在JavaScript中获取域名和端口号的核心方法是使用window.location对象的hostnameport属性,其中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,配合环境变量区分开发与生产环境,开发环境端口常为80803000,生产环境为44380,需通过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}`;

axiosbaseURL配置中动态拼接,避免硬编码。

2 jQuery 环境下的获取

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

性能与兼容性

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

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

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

获取域名和端口是前端开发的基础能力,优先使用window.location.host获取完整主机名,按需拆分hostnameport,在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年7月15日
    0920
  • 怎么用域名做邮箱,域名邮箱申请配置教程

    通过DNS解析将域名MX记录指向邮件服务商服务器,完成身份验证后即可实现以自定义域名结尾的专业邮箱收发信,目前主流方案分为自建与第三方托管两类,推荐中小企业采用阿里云、腾讯企业邮或网易企业邮等成熟SaaS服务以保障稳定性与安全性,域名邮箱的技术实现原理与核心步骤在2026年的数字化办公环境中,域名邮箱已不再是技……

    2026年5月13日
    01743
  • 阿里云建站域名注册,有域名为何还需在阿里云建站?

    随着互联网的快速发展,越来越多的企业和个人开始关注网站建设,阿里云作为国内领先的云计算服务提供商,提供了丰富的域名注册和网站建设服务,本文将详细介绍如何利用阿里云域名进行网站建设,帮助您快速搭建一个干净、结构良好、信息丰富的网站,选择合适的域名域名的重要性域名是网站的“门牌号”,一个好的域名可以提升网站的访问量……

    2025年12月11日
    02770
    • 服务器间歇性无响应是什么原因?如何排查解决?

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

      2026年1月10日
      020
  • 什么是父级域名?它与子域名的关系如何区分?

    父级域名的核心概念与基础认知父级域名(Parent Domain)是互联网域名结构中的基础层级,指包含顶级域名(如.com、.cn)和二级域名(如子域名前缀)的根域名部分,以“www.example.com”为例,其父级域名即为“example.com”,在域名层级中,父级域名是品牌标识的核心载体,直接关联网站……

    2026年2月1日
    02940

发表回复

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

评论列表(2条)

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

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

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

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