Warm tip: This article is reproduced from serverfault.com, please click

javascript-尝试上传到由多个元数据生成的GCP签名URL时获取403

(javascript - Getting 403 while trying to upload to GCP signed URL that was generated with multiple metadata)

发布于 2020-01-23 13:33:28

我在标头中生成了带有两个元数据值的GCP签名的url。

例如,“ x-goog-meta-reviewer”:“ jane”,“ x-goog-meta-author”:“ jack”

当我尝试使用标头中设置的元数据将文件上传到生成的签名URL时,我收到403禁止请求。

但是有趣的是,如果我在两个标头中都设置一个元数据'x-goog-meta-reviewer':'jane',则相同的代码可以正常工作。

尝试将文件上传到Google云时,我们可以不发送两个元数据值吗?

Questioner
Shwetha Padmanabhan
Viewed
22
marian.vladoi 2020-01-23 22:46:51

构造规范请求时,请记住以下有关规范标题的信息:

1.将所有标题名称都小写。

2.使用按代码点值的字典顺序,按标题名称对所有标题进行排序。

3.用换行符(/ n)分隔每个标头。

4.通过使用逗号分隔的值列表创建一个标头名称,消除重复的标头名称。确保值之间没有空格,并确保逗号分隔列表的顺序与标题在你的请求中出现的顺序相匹配。有关更多信息,请参见RFC 7230第3.2节。

5.用一个空格替换所有折叠的空格或换行符(CRLF或LF)。有关折叠空白的更多信息,请参见RFC 7230,第3.2.4节。

6.删除标题名称后出现的冒号周围的所有空白。

7例如,使用自定义标头x-goog-acl:private而不在冒号后删除空格将返回403 Forbidden错误,因为你计算的请求签名与Google计算的签名不匹配。

因此,当你计算出的请求签名与Google计算出的签名不匹配时,你会收到403禁止错误。