我在标头中生成了带有两个元数据值的GCP签名的url。
例如,“ x-goog-meta-reviewer”:“ jane”,“ x-goog-meta-author”:“ jack”
当我尝试使用标头中设置的元数据将文件上传到生成的签名URL时,我收到403禁止请求。
但是有趣的是,如果我在两个标头中都设置一个元数据'x-goog-meta-reviewer':'jane',则相同的代码可以正常工作。
尝试将文件上传到Google云时,我们可以不发送两个元数据值吗?
构造规范请求时,请记住以下有关规范标题的信息:
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禁止错误。
它像一种魅力一样工作!!!选项2(使用按代码点值的字典顺序,按标题名称对所有标题进行排序。)帮助我解决了这个问题。荣誉