如何使用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

相关推荐

  • 单独域名和独立域名究竟有什么区别?

    在数字化浪潮席卷全球的今天,无论是个人创作者、初创企业还是成熟品牌,拥有一个独特的网络身份都至关重要,在构建这个身份的过程中,“单独域名”和“独立域名”是两个经常被提及且容易混淆的概念,虽然它们在日常交流中有时被互换使用,但理解其内在的细微差别,对于制定正确的线上战略具有非凡的意义,本文将深入剖析这两个概念,帮……

    2025年10月25日
    04070
  • 企业服务器域名是什么,企业服务器域名注册

    企业服务器域名是构建数字资产的核心入口,其选择直接决定品牌信任度、SEO权重及业务合规性,建议优先选用.com/.cn顶级域并严格遵循工信部ICP备案规范,在2026年的数字化商业环境中,域名已不再仅仅是一个技术地址,而是企业品牌资产的数字化载体,随着搜索引擎算法对“实体真实性”与“服务安全性”权重的进一步提升……

    2026年7月3日
    0401
  • net域名 vs 公司域名究竟哪种更适合企业在线品牌建设?

    在数字化时代,域名已经成为企业身份和品牌形象的重要组成部分,net域名和公司域名作为两大主流域名类型,各有其独特的优势和适用场景,本文将详细介绍net域名和公司域名的特点、选择要点以及注册流程,net域名概述1 定义net域名,全称为Network Information Center域名,是互联网上的一个顶级……

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

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

      2026年1月10日
      020
  • 比思永久域名究竟是什么?揭秘其独特之处和运作原理!

    什么是比思永久域名?比思永久域名,顾名思义,是一种具有永久有效性的域名服务,它不同于传统的域名注册,后者通常有固定的注册期限,如一年、两年等,比思永久域名则承诺一旦注册成功,用户无需再次续费,该域名将永久有效,比思永久域名的优势稳定性比思永久域名提供稳定的域名服务,确保用户在网站运营过程中不会因为域名到期而面临……

    2025年11月30日
    02.8K0

发表回复

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

评论列表(2条)

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

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

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

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