Javascript 将s3 bucket策略从node.js中的JSON转换为base64
我试图在node.js中的base64中为签名(更具体地说是StringToSign)编码一个Amazon s3 bucket策略,但似乎无法正确编写代码 我使用amazon提供的默认策略进行测试,因为它们提供了正确的base64编码。() 它们的输出是Javascript 将s3 bucket策略从node.js中的JSON转换为base64,javascript,node.js,amazon-web-services,amazon-s3,base64,Javascript,Node.js,Amazon Web Services,Amazon S3,Base64,我试图在node.js中的base64中为签名(更具体地说是StringToSign)编码一个Amazon s3 bucket策略,但似乎无法正确编写代码 我使用amazon提供的默认策略进行测试,因为它们提供了正确的base64编码。() 它们的输出是eyaizxhwaxjhdglvbi6iciymde1……。(保持简短,因为它很长) 我不断得到eyJleHBpcmF0aW9uIjoiMjAxNS0xMi0zMFQx….. 我的生成代码是: var policyString = JSON.st
eyaizxhwaxjhdglvbi6iciymde1……。
(保持简短,因为它很长)
我不断得到eyJleHBpcmF0aW9uIjoiMjAxNS0xMi0zMFQx…..
我的生成代码是:
var policyString = JSON.stringify(policy)
var policyBytes = utf8.encode(policyString)
var stringToSign = base64.encode(policyBytes)
其中,policy
是以JSON格式保存amazon策略的变量,utf8
和base64
是节点模块
这可能听起来像是一个新手问题,但我已经盯着它看了一段时间了,任何hlep都将不胜感激 我解码了您提供的当前部分值
eyAiZXhwaXJhdGlvbiI6ICIyMDE1
eyJleHBpcmF0aW9uIjoiMjAxNS0xMi0zMFQx
各自的产出是:
{ "expiration": "2015
{"expiration":"2015-12-30T1
如您所见,在
策略字符串中删除了一些空格。这就是您获得不同输出的原因您能提供base64编码值的完整输出吗?如果我理解正确,aws sdk提供了此功能:您可以查看源代码以了解其计算方式的详细信息:就是这样!这是由JSON.stringify()引起的。我把政策放在一行,用单引号括起来。太好了。除了接受答案,如果有帮助的话,向上投票也会带来一些爱:)@blongo你把政策放在一行,并用单引号括起来是什么意思?你能说得更具体些吗?你的意思是通过用单引号将对象括起来使其成为字符串吗?喜欢Buffer.from('${obj_here}').toString('base64'))