You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NextJS searchParams解析异常:非HTTP协议双斜杠被移除问题

问题原因解析

这是因为Next.js解析URL搜索参数时,底层遵循WHATWG URL标准,对标准HTTP/HTTPS协议和自定义协议的处理逻辑存在差异:

  • 对于http:///https://这类标准协议,解析器会识别://是URL结构的协议分隔符,属于标准URL格式的固定部分(协议://域名/路径),因此会完整保留双斜杠。
  • 对于myapp://这类自定义协议,解析器不会将其判定为标准URL协议,后续的双斜杠会被当作连续的路径分隔符处理。按照URL规范,连续的斜杠会被合并为单个斜杠,最终就出现了myapp:/auth的结果。

用%2F替代斜杠能解决问题,是因为编码后的%2F会被解析器当作普通字符串处理,不会被识别为路径分隔符,因此能完整保留原始的双斜杠结构。

复现代码示例

export default async function MainPage({searchParams} : { searchParams: { [key: string]: string | string[] | undefined } }) {
    console.log(searchParams);
}

测试场景与输出

  • 访问http://localhost:3000?redirect=http://localhost:3001,输出符合预期:
    {
        "redirect": "http://localhost:3001"
    }
    
  • 访问http://localhost:3000?redirect=myapp://auth,输出双斜杠被合并:
    {
        "redirect": "myapp:/auth"
    }
    

内容的提问来源于stack exchange,提问作者Tom Ryan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 13:47:24