Javascript 关于时差的错误

Javascript 关于时差的错误,javascript,node.js,amazon-web-services,Javascript,Node.js,Amazon Web Services,我用异步调用调用aws,我得到了这个消息 我知道这很可能是由于我的机器时钟关闭造成的,但是我该如何修复它呢?时间设置为自动确定,如下所示。 我在用软呢帽 答案表明AWS键可能超时了(?)(我不完全理解这一点)。如果是这种情况,我该如何解决?根据错误提示,我尝试手动更改时钟-5分钟和+5分钟,但没有任何效果 编辑:使用实时heroku服务器时出现相同错误 Edit2:我正在使用Node Express,并按如下方式拨打电话: function(callback) { // third cal

我用异步调用调用aws,我得到了这个消息<代码>

我知道这很可能是由于我的机器时钟关闭造成的,但是我该如何修复它呢?时间设置为自动确定,如下所示。

我在用软呢帽

答案表明AWS键可能超时了(?)(我不完全理解这一点)。如果是这种情况,我该如何解决?根据错误提示,我尝试手动更改时钟-5分钟和+5分钟,但没有任何效果

编辑:使用实时heroku服务器时出现相同错误

Edit2:我正在使用Node Express,并按如下方式拨打电话:

function(callback) {
  // third call
  var results = '';
  var options = {
    host: urlObject.host,
    protocol: urlObject.protocol,
    path: urlObject.path,
    headers: {
      Authorization: `AWS4-HMAC-SHA256 Credential=key/20171114/us-west-1/awis/aws4_request, SignedHeaders=host;x-amz-date, Signature=key`,
      'Content-Type': 'application/xml',
      'X-Amz-Date': '20171114T190104Z',
      Accept: 'application/xml',
    },
  };
  https.get(options, resource => {
    resource.setEncoding('utf8');
    resource.on('data', function(data) {
      // results += JSON.parse(data);
      results += data;
    });
    resource.on('end', function() {
      callback(null, results);
    });
    resource.on('error', function(err) {
      callback(err);
    });
  });
},

您需要使用
X-Amz-date
标题提供当前日期,而不是示例代码中的日期。下面的示例说明了如何在Node.js中按照AWS API所期望的格式执行此操作:

// get the various date formats needed to form our request
var amzDate = getAmzDate(new Date().toISOString());

// this function converts the generic JS ISO8601 date format to the specific format the AWS API wants
function getAmzDate(dateStr) {
  var chars = [":","-"];
  for (var i=0;i<chars.length;i++) {
    while (dateStr.indexOf(chars[i]) != -1) {
      dateStr = dateStr.replace(chars[i],"");
    }
  }
  dateStr = dateStr.split(".")[0] + "Z";
  return dateStr;
}
//获取形成请求所需的各种日期格式
var amzDate=getAmzDate(新日期().toISOString());
//此函数用于将通用JS ISO8601日期格式转换为AWS API需要的特定格式
函数getAmzDate(dateStr){
var chars=[“:”,“-”;

对于(var i=0;i,您需要使用
X-Amz-date
标题提供当前日期,而不是示例代码中的日期。以下示例说明了如何在Node.js中按照AWS API所期望的格式执行此操作:

// get the various date formats needed to form our request
var amzDate = getAmzDate(new Date().toISOString());

// this function converts the generic JS ISO8601 date format to the specific format the AWS API wants
function getAmzDate(dateStr) {
  var chars = [":","-"];
  for (var i=0;i<chars.length;i++) {
    while (dateStr.indexOf(chars[i]) != -1) {
      dateStr = dateStr.replace(chars[i],"");
    }
  }
  dateStr = dateStr.split(".")[0] + "Z";
  return dateStr;
}
//获取形成请求所需的各种日期格式
var amzDate=getAmzDate(新日期().toISOString());
//此函数用于将通用JS ISO8601日期格式转换为AWS API需要的特定格式
函数getAmzDate(dateStr){
var chars=[“:”,“-”;

对于(var i=0;这与您的时钟无关。您在代码中的两个位置对2017年11月14日进行了硬编码。为什么?这是他们文档中的示例代码。我还可以怎么做?您将其设置为计算签名时使用的实际、当前时间和日期。类似于
DateTime.Now()
?这与您的时钟无关。您在代码中的两个位置硬编码了2017年11月14日。为什么?这是他们文档中的示例代码。我还可以怎么做?您将其设置为计算签名时使用的实际、当前时间和日期。类似于
DateTime.Now()
?好的,谢谢。这篇博客文章很有帮助。现在我需要让我的客户告诉我bucket的url,它应该可以工作。谢谢!好的,谢谢。这篇博客文章很有帮助。现在我需要让我的客户告诉我bucket的url,它应该可以工作。谢谢!