前端开发中为什么要使用 URL().origin 提取接口根地址

文章目录


前言

在前端项目中,接口配置通常类似如下形式

javascript 复制代码
{
  "API_BASE_URL": "http://192.168.100.32/toll/html"
}

在实际业务中,我们经常需要基于该接口地址,拼接静态资源路径或文件访问路径,例如

javascript 复制代码
logo = "upload/logo.png"

期望得到最终地址:

javascript 复制代码
http://192.168.100.32/upload/logo.png

一、如何从一个完整接口地址中,稳定、规范地提取"接口根地址?

标准做法:使用 URL 对象

URL 是浏览器内置的 URL 解析器,遵循 WHATWG URL 标准。

它会将一个字符串 URL 解析为结构化对象,而不是简单文本

javascript 复制代码
const url = new URL("http://192.168.1.32/toll/html");
javascript 复制代码
| 属性         | 含义  | 示例值                    |
| ---------- | --- | ---------------------- |
| `protocol` | 协议  | `http:`                |
| `hostname` | 主机名 | `192.168.1.32`        |
| `port`     | 端口  | ``                     |
| `pathname` | 路径  | `/toll/html`    |
| `origin`   | 源   | `http://192.168.1.32` |

二、.origin 的定义

Origin = protocol + hostname + port

特点:

永远不包含路径

永远不包含 query

永远不包含 hash

自动处理端口

避免做法:

字符串截取

正则解析

require 拼接网络路径


总结

.origin 能准确提取接口根地址,并不是巧合,而是因为:

URL 在 JavaScript 中是一个被浏览器严格解析的结构化对象,而不是普通字符串。

在涉及接口、资源路径、跨域、同源判断的场景中,始终优先使用 URL 对象,而不是手写规则

相关推荐
wuhen_n4 分钟前
JavaScript链表与双向链表实现:理解数组与链表的差异
前端·javascript
wuhen_n8 分钟前
JavaScript数据结构深度解析:栈、队列与树的实现与应用
前端·javascript
阿猿收手吧!9 分钟前
【C++】string_view:高效字符串处理指南
开发语言·c++
我是一只puppy14 分钟前
使用AI进行代码审查
javascript·人工智能·git·安全·源代码管理
颜酱14 分钟前
从二叉树到衍生结构:5种高频树结构原理+解析
javascript·后端·算法
狗哥哥29 分钟前
微前端路由设计方案 & 子应用管理保活
前端·架构
玄同76539 分钟前
我的 Trae Skill 实践|使用 UV 工具一键搭建 Python 项目开发环境
开发语言·人工智能·python·langchain·uv·trae·vibe coding
Yorlen_Zhang1 小时前
Python Tkinter Text 控件完全指南:从基础编辑器到富文本应用
开发语言·python·c#
lxl13071 小时前
C++算法(1)双指针
开发语言·c++
TT哇1 小时前
【实习 】银行经理端两个核心功能的开发与修复(银行经理绑定逻辑修复和线下领取扫码功能开发)
java·vue.js