看起来 urlsafe_b64encode 替换了 base64 编码中的一些字符。来自文档:
使用 URL 和文件系统安全字母表对 bytes-like object s 进行编码,该字母表在标准 Base64 字母表中用
-替换+,用_替换/,并返回编码后的bytes。结果仍然可能包含=。
这意味着结果不是标准的 base64,并且与 Discourse 的解码不兼容。
我建议改用普通的 b64encode 函数。如果需要,您的 HTTP 库应能处理 URL 转义。