Zoom API URL中‘双重编码’指什么?含斜杠的Session ID如何处理?
如何正确处理Zoom Video SDK会话ID中的斜杠(双重编码)
Zoom文档要求的双重编码指的是两次连续的URL编码,而非Base64或其他转义方式,具体逻辑如下:
- 先对原始会话ID做一次标准URL编码,将特殊字符(比如
/)转成对应的百分号编码(/→%2F) - 再对第一次编码后的结果做第二次URL编码,把第一次生成的
%符号转成%25
针对你的示例ID的具体步骤
你的会话ID是4I8wtN3QRkmf4izPrc/2qA==:
- 第一次URL编码后:
4I8wtN3QRkmf4izPrc%2F2qA==(/被转成%2F) - 第二次URL编码后:
4I8wtN3QRkmf4izPrc%252F2qA==(%被转成%25)
把这个双重编码后的ID放到URL路径/api/sessions/:sessionId/status中,Zoom服务器会自动解码一次,得到第一次编码的结果4I8wtN3QRkmf4izPrc%2F2qA==,此时%2F会被正确识别为会话ID的一部分,而非URL路径分隔符。
为什么之前的方法无效
- 单次URL编码:服务器会自动解码一次,
%2F变回/,依然会破坏URL路径结构 - Base64编码:Zoom API期望的是基于原始ID的双重URL编码结果,而非Base64格式
- Uri类的Data转义:这不是Zoom要求的双重URL编码逻辑,不符合API的解析规则
代码示例(以.NET为例)
string originalSessionId = "4I8wtN3QRkmf4izPrc/2qA=="; // 第一次URL编码 string firstEncode = Uri.EscapeDataString(originalSessionId); // 第二次URL编码 string doubleEncode = Uri.EscapeDataString(firstEncode); // 最终用于API请求的URL路径 string apiPath = $"/api/sessions/{doubleEncode}/status";
内容的提问来源于stack exchange,提问作者BradleyDotNET
相关产品推荐
相关产品推荐

