Google Storage PHP客户端:无法通过发布到签名URL来创建对象

时间:2018-10-31 11:18:30

标签: php google-cloud-storage

我们在后端使用Google\Cloud\Storage\StorageObject的signedUploadUrl方法来生成基于我们的基于JS的客户端的上传URL,以便能够将数据上传到这些URL中而无需身份验证。

然后,客户端检索此URL,然后依次通过创建带有POST请求的存储对象start a resumable upload来获取upload_id,随后的PUT请求将使用此upload_id向其添加数据作为验证因素。

我们面临的问题是此签名的上传URL的行为不符合预期:我们应该向其中发布元数据(文件名,内容类型)以获取upload_id,但此请求失败,并带有“ SignatureDoesNotMatch “。

由于我们使用的是官方的PHP客户端库,因此对于无法正常工作可能一无所知。

1 个答案:

答案 0 :(得分:1)

您是否尝试将Content-Type标头与后续的PUT请求一起发送? 由于正在与内容类型标头一起创建生成的签名的上载URL,因此后续的PUT请求必须发送相同的标头。

在这里看看:google-cloud-php

options-> contentType:如果提供此值,则客户端必须将此HTTP标头设置为相同的值。