Azure Blob服务REST API返回403错误:“未指定请求日期标头”

时间:2012-02-29 00:13:27

标签: azure

我尝试使用Blob服务REST API,列表容器(REST API): http://msdn.microsoft.com/en-us/library/windowsazure/dd179352.aspx

所以我从管理门户获取访问密钥 - >托管服务,存储帐户& CDN - >存储帐户,我选择了我的存储(aziztest)并从View Access Keys获取密钥: 主键和辅助键有2个键。

然后使用我创建的String来签名: G n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n-nx-ms-date:Wed,29 Feb 2012 06:05:13 GMT \ nx-ms-version:2009- 09-19 \ N / aziztest \ NCOMP:列表

并使用我的存储的主要访问密钥创建授权标头: 授权:SharedKey aziztest:OjfrOTuO4zy1oUWGHkw8uj3%2BgAZq33GWe15gPT / PK%2Bk%3D

然后发出GET请求: http://aziztest.blob.core.windows.net/?comp=list

但是我收到一个错误: AuthenticationFailed服务器无法验证请求。确保正确形成Authorization标头的值,包括签名。\ nRequestId:892d1f31-a20d-45a5-b16a-2f7c07519863 \ n时间:2012-02-29T00:02:44.2841133Z未指定请求日期标题

我的手术有什么问题?

5 个答案:

答案 0 :(得分:1)

你做的似乎很好,我认为你正在追踪instructions on MSDN on how to create the authentication header?我可以看到您在签名的字符串中使用过它们,但是您的请求标题中是否包含x-ms-datex-ms-version?错误消息表明您没有。

答案 1 :(得分:0)

有关身份验证过程的详细信息,请访问http://msdn.microsoft.com/en-us/library/dd179428.aspx

我的猜测是,x-ms-date距服务器获取请求的时间超过15分钟。

答案 2 :(得分:0)

我在将blob上传到azure存储容器时遇到了类似的错误,但是在javascript中编码。在此处发布link代码列表。希望它可以帮到某人。

答案 3 :(得分:0)

我在php应用程序中遇到同样的问题,问题是文件名编码重音,所以我最终将文件名转换为base64,如下所示:

 $ext=explode(".",$_FILES["file"]["name"]);
  $_FILES["file"]["name"]=str_replace("=","",base64_encode($_FILES["file"]["name"])).".".$ext[count($ext)-1];

答案 4 :(得分:0)

我失去了一天调查错误“请求中的日期标题不正确” - 问题是通过PHP生成日期。正确的日期格式为date("D, d M Y H:i:s T");

我用了“j”一天,但是f.e. 2018年5月9日星期三10:20:30 GMT不正确,必须是2018年5月9日星期三格林尼治标准时间10:20:30。