Python 生成的Azure SAS下载链接上的签名不匹配?

Python 生成的Azure SAS下载链接上的签名不匹配?,python,azure,azure-storage,Python,Azure,Azure Storage,我一直在尝试让共享访问签名为Azure Blob存储工作,因为我想提供有时间限制的下载。为此,我目前使用一个PHP脚本,在Azure网站服务上调用Python脚本 这就是我称之为测试的方式: <?php echo "https://container.blob.core.windows.net/bla/random.zip?"; system('azureapp\Scripts\python azureapp\generate-sas.py "folder/file.zip"'); ?&g

我一直在尝试让共享访问签名为Azure Blob存储工作,因为我想提供有时间限制的下载。为此,我目前使用一个PHP脚本,在Azure网站服务上调用Python脚本

这就是我称之为测试的方式:

<?php echo "https://container.blob.core.windows.net/bla/random.zip?"; system('azureapp\Scripts\python azureapp\generate-sas.py "folder/file.zip"'); ?>
我设法让这个构造在大部分时间内运行,但我当前的问题是,如果我使用生成的链接,我现在总是面临这个错误:

<Message>
Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature. 
</Message>
<AuthenticationErrorDetail>
Signature did not match. String to sign used was r 2015-01-27T22:52:17Z 2015-01-27T22:54:32Z /filepath/random.zip 2012-02-12
</AuthenticationErrorDetail>

服务器无法对请求进行身份验证。确保包括签名在内的授权标头的值格式正确。

假设您的容器名为
bla
,文件名为
random.zip
,请更改以下代码:

<?php echo "https://container.blob.core.windows.net/bla/random.zip?"; system('azureapp\Scripts\python azureapp\generate-sas.py "folder/file.zip"'); ?> 

我没有看到您在SAS计算中的任何位置添加blob容器的名称。我刚刚在我的一个存储帐户上尝试了你的代码,代码运行得非常好。在我的本地版本中,我在获取查询字符串之前应用了容器名称,例如
SharedAccessSignature('shopdownloads','accountkey---------')
。我想这应该足够了?那是帐户的名称。假设您的容器名为
bla
,文件名为
random.zip
,请将执行此操作的
更改为以下代码!真不敢相信我花了好几个小时找那个小错误。。。你能把它作为一个完整的答案贴出来,这样我就可以把你的答案标记为正确的吗?
<?php echo "https://container.blob.core.windows.net/bla/random.zip?"; system('azureapp\Scripts\python azureapp\generate-sas.py "folder/file.zip"'); ?> 
<?php echo "https://container.blob.core.windows.net/bla/random.zip?"; system('azureapp\Scripts\python azureapp\generate-sas.py "bla/random.zip"'); ?>