1

我想将图像文件的 SAS URI 作为查询参数传递给 Azure Functions。但是当我在 GET 调用中传递以下 URL 时,来自“sig”部分的一些字符会被解码 https://ABCD.blob.core.windows.net/images/test.jpg?sp=r&st=2021-05-06T11: 30:21Z&se=2022-05-06T19:30:21Z&spr=https&sv=2020-02-10&sr=b&sig=JuPyAR%2F5WNeSVXj4G%2Fft9QDMzL%2BtXSywSS375jZpjXQ%3D

上面的 URL 变为 https://ABCD.blob.core.windows.net/images/test.jpg?sp=r&st=2021-05-06T11:30:21Z&se=2022-05-06T19:30:21Z&spr=https&sv= 2020-02-10&sr=b&sig=JuPyAR/5WNeSVXj4G/ft9QDMzL+tXSywSS375jZpjXQ=

%2F 到 / %2B 到 + %3D 到 =

因此,当我尝试访问 blob 时,出现错误

System.Private.CoreLib:执行函数时出现异常:FUNCTIONNAME。System.Net.Requests:远程服务器返回错误:(403)服务器未能验证请求。确保 Authorization 标头的值正确形成,包括签名..

我正在使用以下代码访问 URI

string image = req.Query["image"];

4

1 回答 1

0

在将图像 URL 作为请求参数发送到 Azure 函数之前,请使用base64对整个 URL 进行编码,并在 Azure 函数中对其进行解码,如下所示:

string image = req.Query["image"];

string base64Encoded = image;
string base64Decoded;
byte[] data = System.Convert.FromBase64String(base64Encoded);
base64Decoded = System.Text.ASCIIEncoding.ASCII.GetString(data);
log.LogInformation(image);
log.LogInformation(base64Decoded);

以便您可以获取原始网址。我已经在我身边进行了测试,它非常适合我:

在此处输入图像描述

如果您还有其他问题,请告诉我。

于 2021-05-07T01:10:09.810 回答