首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >来自浏览器的AWS S3 RequestTimeTooSkewed

来自浏览器的AWS S3 RequestTimeTooSkewed
EN

Stack Overflow用户
提问于 2021-04-21 01:45:26
回答 1查看 93关注 0票数 1

S3中存在一个已知问题,即如果系统由于某种原因导致其时钟不同步,则上载将失败,并出现RequestTimeTooSkewed错误。

当这是由服务器触发时,有很多解决方案(基本上是修复服务器时钟),但是当这是由我的应用程序用户的浏览器触发时,我该怎么办?

即使将correctClockSkew设置为true也不能修复它。

代码语言:javascript
运行
复制
AWS.config.update({
  correctClockSkew: true,
  ...
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-21 02:22:54

以下是浏览器中JavaScript纠正客户端时钟偏差的潜在解决方案。您的客户端向S3存储桶发送HEAD请求(因此需要权限,或者您使用公共存储桶,并且需要存储桶上的CORS来公开数据头部):

代码语言:javascript
运行
复制
correctClockSkew = (Bucket) => {
    const s3 = new AWS.S3();

    // Head the bucket to get a Date response. The 'date' header
    // will need to be exposed in S3 CORS configuration.
    s3.headBucket({ Bucket }, (err, data) => {
        if (err) {
            console.log('headBucket error:', err);
        } else {
            console.log('headBucket data:', JSON.stringify(data));
            console.log('headBucket headers:', JSON.stringify(this.httpResponse.headers));

            if (this.httpResponse.headers.date) {
                const date = Date.parse(this.httpResponse.headers.date);
                console.log('headers date:', date);
                AWS.config.systemClockOffset = new Date() - date;
                console.log('clock offset:', AWS.config.systemClockOffset);
                // Can now safely generate presigned urls
            }
        }
    });
};

这是从aws-js-s3-explorer项目借来的。

另一种选择是等待重试事件(借用自this comment):

代码语言:javascript
运行
复制
AWS.events.on('retry', function (response: any) {
  if (response.error.name === 'RequestTimeTooSkewed') {
    var serverTime = Date.parse(response.httpResponse.headers['date']);
    var timeNow = new Date().getTime();
    AWS.config.systemClockOffset = Math.abs(timeNow - serverTime);
    response.error.retryable = true;
  }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67183857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档