在不破坏原始请求结构的情况下,对完整 URL 进行编码、解码回调链接,并转义查询参数值。
在编码 redirect_uri 或回调值吗?先阅读按组件说明规则的指南,然后回到这里精确编码或解码该值。
URL 编码(也称百分号编码)会把空格、Unicode 和保留字符转换为适合传输的安全格式。当浏览器 URL、redirect_uri、API 查询值或复制来的回调链接需要在传输过程中保持原意时,就该使用它。
如果你想在一条完整链接中继续清晰保留 :, /, ?, &, = 这样的分隔符,请使用完整 URL 编码。如果某个值必须放进查询参数、重定向目标或嵌套回调 URL 中,请使用组件编码。
redirect_uri=https://app.example.com/callback?next=/settings
redirect_uri=https%3A%2F%2Fapp.example.com%2Fcallback%3Fnext%3D%2Fsettings
https://app.example.com/callback?next=%2Fsettings%3Ftab%3Dprofile
https://app.example.com/callback?next=/settings?tab=profile
email=dev+alerts@example.com
email=dev%2Balerts%40example.com
如果你希望整条链接仍然可读,并保留 ?, &, = 这样的分隔符,就应该编码完整 URL。如果数据必须放进单个 key=value 对中,例如 redirect_uri、state 或搜索词,就只编码该参数值。
encodeURI 会为完整链接保留 :, /, ?, # 等 URL 结构字符。encodeURIComponent 也会转义这些保留字符,因此它更适合查询参数值、嵌套 URL 和复制来的回调目标。