45

PUT请求期间,使用正确的 Authorization 标头创建新的 BLOB,当我尝试将PUT文件放入容器时,我的进程收到“404 Resource Not Found”错误。

https://accountNameHere.blob.core.windows.net/containerNameHere

容器名称和帐户名称都正确。

为什么会失败?


以下是原始请求标头:

PUT /testss HTTP/1.1
Host: accountName.blob.core.windows.net
Accept: */*
Connection: Keep-Alive
0: content-encoding
1: content-language
2: content-length
3: content-md5
4: content-type
5: date
6: if-modified-since
7: if-match
8: if-none-match
9: if-unmodified-since
10: range
x-ms-blob-type: BlockBlob
x-ms-version: 2011-08-18
x-ms-date: Fri, 09 Aug 2013 04:17:59 GMT
Content-Length: 126377
Authorization: SharedKey accountName:MBVLmoxzxZr+tf8EZw2GkbFLEHuNn8FNAaEHrcty/cM=
Expect: 100-continue

这是我发送的要签名的字符串:

PUT x-ms-blob-type:BlockBlob x-ms-date:Fri, 09 Aug 2013 04:03:20 GMT x-ms-version:2011-08-18 /accountName/test

这是他们所期望的:

PUT 126377 x-ms-blob-type:BlockBlob x-ms-date:Fri, 09 Aug 2013 04:02:17 GMT x-ms-version:2011-08-18 /accountName/test

两者之间的唯一区别是126377after PUT。那是文件的内容长度,我只是不确定如何删除它。

4

5 回答 5

33

您是否检查过 Blob 容器的安全设置?可能是您没有足够的访问权限。

于 2015-03-30T13:21:53.480 回答
29

1 - 在Azure 存储资源管理器应用程序中执行这些步骤来更改/验证访问。

  1. 右键单击有问题的容器的 blob
  2. 选择Set Public Access Level
  3. 至少设置为Public read access for blobs only.
  4. 申请。

在此处输入图像描述


2 - 或在 Azure 门户面板中选择

  • Storage account>
  • Blob service部分选择“ Blob”>
  • 选择要更改访问权限的 Blob >
  • 选择“ Access policy”>
  • 根据您的需要,从下拉菜单中选择“ Blob”或“ Container”匿名访问
于 2019-01-22T15:29:57.720 回答
13

检查你的容器。在新门户中,单击它旁边的省略号并编辑。如果要允许列出容器,则将访问类型设置为 Blob 或 Container。

微软似乎提高了安全性,并默认将新容器设为私有。

于 2015-07-20T10:29:29.413 回答
0

您应该使用Fiddler来验证您是否正在发送您认为的请求。然后,您可以将 Fiddler 请求与文档进行比较。

容器是否已经存在?值得使用第 3 方存储资源管理器来验证它是否存在。

于 2013-08-09T03:24:55.937 回答
0
  1. 选择您的存储帐户
  2. 选择容器
  3. 检查容器的复选框
  4. 单击更改访问级别

按照图片中的 1 - 4 步操作

  1. 单击按钮更改访问级别后,您将看到以下屏幕
  2. 根据您的要求更改选项。

更改访问权限

于 2021-09-19T18:33:04.110 回答