前端开发中为什么要使用 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 对象,而不是手写规则

相关推荐
Eiceblue3 分钟前
用 Python 给 Word 文档加水印:文字、图片与批量处理
开发语言·vscode·python·word
j7~8 分钟前
【C++ 面试笔记】(篇二):类与数据抽象 & STL 容器与算法
开发语言·c++·面试·stl容器和算法·类和数据抽象
Fuyo_111926 分钟前
深入解析 C++ unordered_set 与 unordered_map 的核心特性与性能实战
开发语言·c++
Nymph_Zhu34 分钟前
pdf转换markdown预览及内容互相点击定位
前端·pdf·vue3·markdown·element-plus
计算机魔术师38 分钟前
Google 一天蒸发5000亿,Reddit 靠 AI 训练喂得饱自己却饿死
前端
小大宇1 小时前
Vue知识点-ElementPlus-05 输入框
前端·javascript·vue.js
东鹏特饮1 小时前
本机状态监控页面html
运维·css·html·css3
软件技术NINI1 小时前
基于SpringBoot和Vue的摇滚乐鉴赏网站
vue.js·spring boot·后端·spring·html·毕业设计·毕设
ShineWinsu1 小时前
对于Qt:QPushButton常见属性的解析
开发语言·c++·qt·api·gui·按钮·qpushbutton
外贸GEO优化1 小时前
外贸独立站的可抓取性:JS 渲染、懒加载与无限滚动到底影响什么
开发语言·javascript·ecmascript