URL Encoder
Encode a full URL or a single nested component with the right boundary, then copy a clean result for redirects, query parameters, and callback links.
Encoded Output
Generated with encodeURIComponent-style rules.
https%3A%2F%2Fapp.aistacker.dev%2Fcallback%3Fplan%3Dpro%20plus%26from%3Dpricing常见问题
如何正确编码 redirect_uri?
将重定向目标视为一个嵌套值,并在将其附加到外部登录或 OAuth URL 之前,将其作为“单一组件”进行编码。这可以防止内部的 `?`、`&` 和 `=` 泄露到外部查询字符串中。
我应该编码整个 URL 还是编码一个查询值?
如果它已经是最终的可读 URL,则编码整个 URL;如果该值将被插入另一个 URL 并作为一个整体,则编码查询值。
工作流程
URL 编码工具 是什么?
URL 编码工具能帮助你在将值附加到重定向链接、回调 URL 或查询字符串之前,确定正确的编码边界。真正的挑战通常不在于百分比编码本身,而是在于判断当前内容是一个应保持可读性的完整 URL,还是一个必须被视为单一安全组件的嵌套值。
在涉及 `redirect_uri`、追踪参数、深度链接、签名 URL 以及在前后端代码间复制回调链接的工作流中,这种边界尤为重要。编码错误的层面会导致分隔符暴露、嵌套目标损坏,或者引发只有在经过多层重定向后才会出现的双重编码 Bug。
如何使用 URL 编码工具
在输入框中粘贴完整 URL 或单个嵌套值。如果字符串应保持为包含 `/`、`?`、`&` 和 `=` 等分隔符的可读 URL,请选择“完整 URL(Entire URL)”模式。如果该值将被作为编码单元插入另一个 URL(如 `redirect_uri` 或某个参数值),请选择“单一组件(Single Component)”模式。
检查编码输出,并参考边界提示和警告面板,确认没有对已包含百分比编码的序列或应单独处理的嵌套 URL 进行二次编码。
示例
输入值:
https://app.aistacker.dev/callback?plan=pro plus&from=pricing
完整 URL 输出:
https://app.aistacker.dev/callback?plan=pro%20plus&from=pricing
单一组件 输出:
https%3A%2F%2Fapp.aistacker.dev%2Fcallback%3Fplan%3Dpro%20plus%26from%3Dpricing应用场景
1. 在将嵌套的 `redirect_uri` 附加到 OAuth 或登录 URL 前进行编码。
2. 编码包含空格、`&` 或 `=` 的单个查询参数值。
3. 检查回调目标是作为整体 URL 编码的还是作为单一组件编码的。
4. 在生产环境出现重定向 Bug 前,对比 `encodeURI` 和 `encodeURIComponent` 风格的输出。
常见问题
什么时候该编码完整 URL,什么时候该编码单一组件?
当字符串本身就是一个独立的、需要保持分隔符可读的完整 URL 时,编码完整 URL。当该值是要放入另一个 URL 内部作为一个安全单元时,请编码单一组件。
为什么 redirect_uri 通常需要组件编码?
因为重定向目标通常位于另一个查询字符串内部。如果你过早地让其中的 `?`、`&` 或 `=` 保持可读,外部 URL 可能会将嵌套的目标拆分为多个独立的参数。
“过度编码(Over-encoding)”通常意味着什么?
过度编码通常意味着该值已经包含百分比编码序列,但在上游又被编码了一次。这通常表现为重复的 `%25` 模式或看起来不连贯的嵌套 URL。