Amazon web services 为什么X-Amz-Signature在每次请求时都会更改?
我正在使用基于AmazonS3AWS的服务。所有内容都在浏览器中运行,因此当我请求下载某个文件时,控制台网络输出(复制为获取)如下所示:Amazon web services 为什么X-Amz-Signature在每次请求时都会更改?,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,我正在使用基于AmazonS3AWS的服务。所有内容都在浏览器中运行,因此当我请求下载某个文件时,控制台网络输出(复制为获取)如下所示: await fetch("https://i90downloadv2.s3.amazonaws.com/1401b1b7-59fe-40d0-9bd0-3749825b42eb/terms.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201020T152912Z&X-Amz-Si
await fetch("https://i90downloadv2.s3.amazonaws.com/1401b1b7-59fe-40d0-9bd0-3749825b42eb/terms.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201020T152912Z&X-Amz-SignedHeaders=host&X-Amz-Expires=60&X-Amz-Credential=SECRETEKEY%2F20201020%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=846ae16634fae2a2c16434875d2920288921ec4b430c178460be835cc3b34f92", {
"credentials": "omit",
"headers": {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:81.0) Gecko/20100101 Firefox/81.0",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.5",
"Upgrade-Insecure-Requests": "1"
},
"method": "GET",
"mode": "cors"
});
正如我在docs.aws.amazon中所读到的,签名的方式如下(基于上述参数):
但是,当我试图在单独的NodeJs脚本中使用相同的参数重新创建相同的签名密钥时,最终的密钥不匹配
此外,当我在浏览器中对同一资源在同一天发出第二个请求时,签名密钥与前一个不同
我的问题是:
signing_key = HMAC-SHA256(HMAC-SHA256(HMAC-SHA256(HMAC-SHA256("AWS4" + "SECRETKEY","20201020"),"us-east-1"),"s3"),"aws4_request")