使用JavaScript的new URL(url, base)构造URL时base路径被剥离的问题
问题原因
你使用new URL("/items", "https://example.com/v1")时,第一个参数/items是绝对路径(以斜杠开头),这会直接替换base URL中的/v1路径,导致最终结果丢失了v1部分。
修复方案
只需将第一个参数改为相对路径(去掉开头的斜杠),这样URL构造函数就会把它追加到base的路径后面:
const getUrl = () => { const ids = ["1","2","3"]; // 去掉items前的斜杠,使用相对路径 const url = new URL("items", "https://example.com/v1"); url.searchParams.set("id", ids?.toString() ?? ""); return url.toString(); }; console.log(getUrl()); // 输出:https://example.com/v1/items?id=1%2C2%2C3
补充说明
URL构造函数的核心规则:
- 若第一个参数是绝对路径(以/开头),则直接作为新URL的pathname,完全覆盖base的pathname
- 若第一个参数是相对路径(不以/开头),则会追加到base的pathname之后
内容的提问来源于stack exchange,提问作者Rahul Yadav
相关产品推荐
相关产品推荐

