如何在Fine Uploader中解决RequestTimeTooSkewed问题

时间:2016-04-26 15:12:14

标签: amazon-s3 fine-uploader

我在S3上使用Fine Uploader并且我的客户端的计算机时间已关闭,导致S3 RequestTimeTooSkewed错误。理想情况下,我的客户会有合适的时间,但我希望我的应用能够在这种情况下保持稳健。

我已经看过这篇文章 - https://github.com/aws/aws-sdk-js/issues/399,了解如何自动重试请求。您从错误响应中获取ServerTime,并将其用作响应中的时间。另一种方法是每次从可靠的外部源获取时间,避免重试的需要。但是,我不确定如何将这两种方法挂钩到S3 Fine Uploader。有没有人知道如何做到这一点?

1 个答案:

答案 0 :(得分:1)

Fine Uploader 5.5中提供了一个解决方案来解决这种情况。来自S3 feature documentation

如果运行Fine Uploader的机器上的时钟离当前日期太远,S3可能会拒绝从本机发送的任何请求。要克服这种情况,您可以在创建新的Fine Uploader实例时包含clock drift value(以毫秒为单位)。设置此值的一种方法是根据您的服务器从当前的unix时间根据浏览器减去当前时间。例如:

var uploader = new qq.s3.FineUploader({
    request: {
        clockDrift: SERVER_UNIX_TIME_IN_MS - Date.now()
    }
})

如果此值不为零,则Fine Uploader S3将使用它来填充x-amz-date标头以及发送给S3的策略到期日期。