我们在后端使用Google\Cloud\Storage\StorageObject的signedUploadUrl方法来生成基于我们的基于JS的客户端的上传URL,以便能够将数据上传到这些URL中而无需身份验证。
然后,客户端检索此URL,然后依次通过创建带有POST请求的存储对象start a resumable upload来获取upload_id,随后的PUT请求将使用此upload_id向其添加数据作为验证因素。
我们面临的问题是此签名的上传URL的行为不符合预期:我们应该向其中发布元数据(文件名,内容类型)以获取upload_id,但此请求失败,并带有“ SignatureDoesNotMatch “。
由于我们使用的是官方的PHP客户端库,因此对于无法正常工作可能一无所知。
答案 0 :(得分:1)
您是否尝试将Content-Type标头与后续的PUT请求一起发送? 由于正在与内容类型标头一起创建生成的签名的上载URL,因此后续的PUT请求必须发送相同的标头。
在这里看看:google-cloud-php
options-> contentType:如果提供此值,则客户端必须将此HTTP标头设置为相同的值。