我有一个问题要写入azure Storage Container blob。我发布了http对azure网站的请求。我尝试过不同的密钥,包括SAS。
我总是收到错误403:服务器无法验证请求。确保正确形成Authorization标头的值,包括签名。
so I suppose the url was found
can you please help me
the code is as follows
let url = "https://matasisrael.blob.core.windows.net/matas/routes.json";
const httpOptions = {
headers: new HttpHeaders({
'x-ms-version': '2015-02-21',
'x-ms-date': '2019-04-09',
'Content-Type': 'application/json; charset=UTF-8',
'x-ms-blob-type': 'BlockBlob',
'Authorization': 'SharedKey myaccount:<access key>,
'Vary': 'Origin',
'Content-Length':"1024"
})
};
this.http.put(url,"{hel:ds}",httpOptions).subscribe(data=> {})
由于您是通过Angular应用程序上传blob,因此建议您使用SAS令牌。使用SAS Token,您实际上不需要提供Authorization
标头。
您要做的是使用blob URL和SAS Token创建SAS Url,并使用该URL执行HTTP PUT请求。由于SAS令牌已包含存储服务版本,因此您无需在请求标头中包含x-ms-version
。此外,您不需要x-ms-date
标头。
所以你的代码将是这样的:
let url = "https://matasisrael.blob.core.windows.net/matas/routes.json?" + sasToken;
let requestBody = "{hel:ds}";
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json; charset=UTF-8',
'x-ms-blob-type': 'BlockBlob',
'Content-Length': requestBody.length
})
};
this.http.put(url, requestBody, httpOptions).subscribe(data=> {})