我正在尝试使用Node-RED中的HTTP请求将数据发送到我的Azure Blob存储帐户-GET-Request正常运行,因为它不需要身份验证。我的问题是PUT-Request。我不确定哪种身份验证方法是最佳/最简便的方法,但是我正在尝试使用SharedKey的运气。
PUT请求的URL是这个(用存储帐户的名称替换“ myaccount”:
https://myaccount.blob.core.windows.net/container5/myblob
我尝试添加一个功能节点来修改Request的标头,但是我不知如何正确地编写它们。这是我写的:
msg.headers = {};
msg.headers['x-ms-version'] = '2018-03-28';
msg.headers['x-ms-date'] = '2019-04-10';
msg.headers['x-ms-blob-type'] = 'BlockBlob';
msg.headers['x-ms-meta-m1'] = 'v1';
msg.headers['x-ms-meta-m2'] = 'v2'
msg.headers['charset']='UTF-8';
msg.headers['Authorization'] = 'SharedKey' ;
return msg;
我知道我仍然必须在代码中编写实际的SharedKey,但是我不知道如何。谁能帮我?我已经在Microsoft文档中找到了示例,但是语法有所不同,因此我不知道如何使它适应Node-RED中的功能节点。这就是我在https://docs.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key中发现的内容:
Authorization: SharedKeyLite myaccount:ctzMq410TV3wS7upTBcunJTDLEJwMAZuFPfr0mrrA08=
无论如何,以下是我目前遇到的错误。我猜这意味着我的授权标头错误/不完整
<?xml version="1.0" encoding="utf-8"?><Error><Code>InvalidAuthenticationInfo</Code><Message>Authentication information is not given in the correct format. Check the value of Authorization header.RequestId:494d22bf-f01e-0091-417e-ef8554000000Time:2019-04-10T09:17:15.3098669Z</Message></Error>