JWT Token 不支持哪些字符?

5 min read

在请求的 token 中,确实不支持 @ 字符。常见的 token 通常使用 Base64Url 编码,这种编码方式明确排除了 @ 字符。Base64Url 编码使用以下字符集:

  1. 字母

    • 大写字母:A-Z
    • 小写字母:a-z
  2. 数字

    • 0-9
  3. 特殊字符

    • -(连字符)
    • _(下划线)

这些字符的选择是为了确保在 URL 中传输时不会引起编码问题。具体来说,Base64Url 编码不会使用以下字符:

  • +/ (这些字符在 Base64 编码中使用,但在 URL 中有特殊意义)
  • = (填充字符,在 URL 中不适合使用)
  • @ (在 URL 和电子邮件地址中有特殊用途)

以下是一个常见的 JSON Web Token (JWT) 结构示例:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

这个 JWT 示例中每个部分都使用了 Base64Url 编码,其中不会出现 @ 字符。

因此,在生成和使用请求 token 时,确保使用符合 Base64Url 编码规范的字符集,以避免在传输过程中遇到问题。