如何解决为什么我的 Cloud Storage 网址中的斜杠需要编码为 %2F?
我在 Firebase Cloud Storage 的以下文件夹中存储了一个文件:
/logs/2021/03/2021-03-22.json
我正在尝试通过下载 URL 访问它。
这不起作用:
https://firebasestorage.googleapis.com/v0/b/PROJECT_ID.appspot.com/o/logs/2021/03/2021-03-22.json?alt=media
{
"error": {
"code": 400,"message": "Invalid HTTP method/URL pair."
}
}
但以下 URL 工作正常(当文件夹路径中的斜杠被编码为 %2F
时),并且我按预期获得了文件的内容。
https://firebasestorage.googleapis.com/v0/b/PROJECT_ID.appspot.com/o/logs%2F2021%2F03%2F2021-03-22.json?alt=media
这是为什么?我是否总是需要将存储桶文件夹级别的斜杠编码为 %2F
?
解决方法
字符 /
用作 URL 各个元素的路径分隔符,%2F
被转换为 /
,然后用作 URI 中的分隔符。
与问题相关:% 符号始终表示已编码的字符,只需对任何被认为不安全的字符进行编码,就可以使 URI 变得“更安全”,同时保留已编码的字符仍然编码 [1] .
谈到 Firebase,Google 文档说:/logs/ 后面的日志名称部分必须是 URL 编码的。这意味着正斜杠字符 / 必须写为 %2F [2]。
[1] https://www.w3.org/Addressing/URL/4_URI_Recommentations.html
[2] https://firebase.google.com/support/guides/cloud-audit-logging/firebase-management
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。