Blob SAS URI 字符在作为查询参数传递给 Azure Function 应用程序时解码
Blob SAS URI character decoded when passed as Query parameter to Azure Function app
我想将图像文件的 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
%2F 至/
%2B 至 +
%3D =
因此,当我尝试访问 blob 时,出现 error:
System.Private.CoreLib: Exception while executing function: FUNCTIONNAME. System.Net.Requests: The remote server returned an
error: (403) Server failed to authenticate the request. Make sure the
value of Authorization header is formed correctly including the
signature..
我正在使用以下代码访问 URI
string image = req.Query["image"];
在将图像 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);
这样就可以得到原文URL。我已经在我这边测试过了,它非常适合我:
如果您还有其他问题,请告诉我。
我想将图像文件的 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
%2F 至/ %2B 至 + %3D =
因此,当我尝试访问 blob 时,出现 error:
System.Private.CoreLib: Exception while executing function: FUNCTIONNAME. System.Net.Requests: The remote server returned an error: (403) Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature..
我正在使用以下代码访问 URI
string image = req.Query["image"];
在将图像 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);
这样就可以得到原文URL。我已经在我这边测试过了,它非常适合我:
如果您还有其他问题,请告诉我。