Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将s3 bucket策略从node.js中的JSON转换为base64_Javascript_Node.js_Amazon Web Services_Amazon S3_Base64 - Fatal编程技术网

Javascript 将s3 bucket策略从node.js中的JSON转换为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

我试图在node.js中的base64中为签名(更具体地说是StringToSign)编码一个Amazon s3 bucket策略,但似乎无法正确编写代码

我使用amazon提供的默认策略进行测试,因为它们提供了正确的base64编码。()

它们的输出是
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'))