Lyn*_*ing 5 google-cloud-storage pre-signed-url
我们的下载托管在Google云端存储上.有一段时间了,我们一直在按需创建一个已签名的URL(当用户点击下载按钮时),然后将用户重定向到该URL.
这段代码已经生产了几个月,但最近我们发现存在竞争条件:有时URL还没有准备好.在此之前,尝试访问签名的URL会导致a 403: Forbidden.
我们尝试通过发送HEAD请求来查询URL是否准备就绪,以寻找200响应,从而缓解此问题.这似乎是一个很好的解决方案,直到我们意识到偶尔存在第三个状态:URL已创建,但尚未准备好.我们的HEAD收到了200 Success以下XML文档的回复:
<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>
The request signature we calculated does not match the signature
you provided. Check your Google secret key and signing method.
</Message>
<StringToSign>
GET 1469137341 /our-bucket-name/path/to/file.exe?
response-content-disposition%3dattachment%3b+filename%3dfile.exe
</StringToSign>
</Error>
Run Code Online (Sandbox Code Playgroud)
几秒钟后,URL就可以使用了.创建签名URL的文档没有讨论它没有立即准备好的可能性.
我的问题:您如何确定新创建的签名URL何时可以使用?
编辑
我们实际上已经使用了URL生成代码(并且它一直运行良好)已有好几个月了.仅在最近两周内我们才注意到我们使用了回退机制(即URL尚未就绪).这几乎就像谷歌在上个月改变了代码,这导致了URL准备就绪时的延迟.到目前为止,竞争条件甚至不明显.
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |