URL 解析器

URL(统一资源定位符)用于标识网络上的资源。此工具将 URL 分解为各个组成部分:协议、主机、端口、路径、查询参数和片段。它自动解码百分号编码的值,处理带有 Punycode 转换的国际化域名(IDN),并能检测参数中嵌入的 Base64 或 JSON 数据。

规范

常见用例

  • 调试 OAuth 2.0 重定向 URL 和回调参数
  • 检查 webhook URL 及其查询参数
  • 分析跟踪参数(UTM、来源数据)
  • 解码移动深层链接(app://、自定义协议)
  • 排查 URL 路由问题
  • 在 Unicode 和 Punycode 之间转换国际化域名

功能

  • 解析所有 URL 组件(协议、主机、端口、路径、查询、片段)
  • 自动解码百分号编码(URL 编码)的值
  • 将查询字符串解析为键值对
  • 在 Unicode 和 Punycode 之间转换国际化域名(IDN)
  • 检测并解码参数值中的 Base64 或 JSON
  • 将单个组件复制到剪贴板

示例

OAuth 回调

试试看 →

带有 code 和 state 参数的 OAuth 2.0 授权回调。

https://app.example.com/callback?code=abc123&state=xyz789&redirect_uri=https%3A%2F%2Fexample.com

国际化域名(Punycode)

试试看 →

带有 Punycode 编码域名的 URL(xn-- 前缀表示 IDN)。

https://xn--mnchen-3ya.de/path

国际化域名(Unicode)

试试看 →

带有 Unicode 域名的 URL,将被转换为 Punycode。

https://münchen.de/path

提示

  • 百分号编码用 %XX 替换不安全字符,其中 XX 是十六进制值。
  • 片段(#)永远不会发送到服务器;它仅在客户端使用。
  • 查询参数可以使用相同的键名出现多次。
  • 用户信息中的某些字符(如 @ 和 :)需要编码。
  • 对参数值使用 encodeURIComponent(),对完整 URL 使用 encodeURI()。

理解 URL 解析器

URL(统一资源定位符)是网络的寻址系统,由 RFC 3986 定义为 URI(统一资源标识符)的特定类型。URL 由多个组件组成:协议(如 https)、授权部分(主机、可选端口、可选用户信息)、路径、可选的键值参数查询字符串,以及可选的片段标识符。

百分号编码(URL 编码)是在 URL 中表示特殊字符的机制。不在非保留字符集(A-Z、a-z、0-9、-、_、.、~)中的字符必须编码为 %XX,其中 XX 是该字节的十六进制值。空格变为 %20(或查询字符串中的 +)。非 ASCII 字符首先编码为 UTF-8 字节,然后每个字节进行百分号编码。

查询字符串以 & 字符分隔的 key=value 对形式携带参数。Web 应用程序将其用于搜索词、分页、过滤、排序和跟踪(UTM 参数)。OAuth 2.0 重定向 URL 在查询参数中携带授权码和状态令牌。复杂值本身可能也经过 URL 编码,形成需要仔细解码的编码层。

国际化域名(IDN)使用 Punycode 编码(RFC 3492)来表示域名中的非 ASCII 字符。xn-- 前缀表示一个 Punycode 编码的标签。例如,muenchen.de 变为 xn--mnchen-3ya.de。这种编码确保了与纯 ASCII DNS 系统的兼容性,同时支持任何文字的域名。

JavaScript 提供了两个用途不同的 URL 编码函数。encodeURI 编码完整的 URI,保留在 URL 中具有结构意义的字符(如 : / ? # @ 和 =)。encodeURIComponent 编码单个 URI 组件(如查询参数值),编码所有特殊字符,包括 / 和 &。对参数值使用 encodeURIComponent,仅在编码完整 URL 时使用 encodeURI。片段标识符(# 之后的所有内容)由 RFC 3986 定义为仅客户端使用——浏览器将其用于页内导航和单页应用的客户端路由,但它永远不会包含在发送到服务器的 HTTP 请求中。

Punycode 是使国际化域名在纯 ASCII DNS 系统中成为可能的编码。包含非拉丁字符的域名使用带有 xn-- 前缀的 Punycode 存储在 DNS 中,因此 muenchen.de 存储为 xn--mnchen-3ya.de。浏览器向用户显示 Unicode 形式,同时在后台使用 Punycode 形式进行 DNS 解析。

查询字符串可以包含同一参数名的多个值,如 ?color=red&color=blue。不同的框架处理方式不同——有些返回最后一个值,有些返回第一个,有些返回包含所有值的数组。此工具显示所有参数出现次数。在 JavaScript 中,URLSearchParams.getAll() 检索重复键的所有值,而不仅仅是第一个或最后一个。

← 返回所有工具