Javascript 尝试上载到使用多个元数据生成的GCP签名URL时获取403

Javascript 尝试上载到使用多个元数据生成的GCP签名URL时获取403,javascript,node.js,google-cloud-platform,google-cloud-storage,Javascript,Node.js,Google Cloud Platform,Google Cloud Storage,我生成了一个GCP签名的url,其头部有两个元数据值 例如, “x-goog-meta-reviewer”:“jane”, “x-goog-meta-author”:“jack” 当我尝试将文件上载到生成的签名URL时,在标题中设置了元数据。。我收到403封禁请求 但有趣的是,如果我只设置一个元数据,同样的代码也可以正常工作 “x-goog-meta-reviewer”:“jane” 在两个标题中 在尝试将文件上载到Google cloud时,我们不能发送两个元数据值吗?当您构建应用程序时,您应

我生成了一个GCP签名的url,其头部有两个元数据值

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

当我尝试将文件上载到生成的签名URL时,在标题中设置了元数据。。我收到403封禁请求

但有趣的是,如果我只设置一个元数据,同样的代码也可以正常工作 “x-goog-meta-reviewer”:“jane” 在两个标题中

在尝试将文件上载到Google cloud时,我们不能发送两个元数据值吗?

当您构建应用程序时,您应该记住 对于规范标头,请执行以下操作:

1.使所有标题名称小写

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

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

4.通过创建一个带有 以逗号分隔的值列表。确保两个文件之间没有空格 值,并确保逗号分隔列表的顺序 匹配头在请求中的显示顺序。更多 有关信息,请参见RFC 7230第3.2节

5.将任何折叠空格或换行符(CRLF或LF)替换为单个 空间有关折叠空白的更多信息,请参阅RFC 7230, 第3.2.4节

6.删除标题后冒号周围的所有空格 名字

7.例如,使用自定义标头x-goog-acl:private而不使用 删除冒号返回403禁止错误后的空格, 因为您计算的请求签名与 谷歌计算的签名


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

对于我来说,我从Postman生成了代码,并切换了标题的顺序,使其正常工作

  var config = {
method: 'put',
url: response.uploadUrl,
headers: {
  'content-type': 'application/zip',
  'x-goog-content-length-range': '0,104857600',
  ...data.getHeaders(),
},
data: data
};
vs


})

403发生未经授权的访问,检查角色,它就像一个魅力!!!!。选项2(使用按代码点的字典排序值按标题名称对所有标题进行排序)帮助我解决了这个问题。荣誉
  var config = {
method: 'put',
url: response.uploadUrl,
headers: {
  ...data.getHeaders(),
  'content-type': 'application/zip',
  'x-goog-content-length-range': '0,104857600',
},
data: data