簡體   English   中英

Azure禁止Blob,但讓Blob可以正常使用REST API

[英]Azure put blob forbidden, but get blob works rest api

我想使用HttResquestMessage將文本文件放到Blob容器中,並且出現403錯誤(禁止訪問)。 我知道這是一個著名的問題,對此有很多答案,但是我進行了很多搜索,在我的情況下找不到問題。 這是我的簽名

PUT\n
\n
\n
11\n
\n
\n
\n
\n
\n
\n
\n
\n
x-ms-blob-type:BlockBlob\n
x-ms-date:Thu, 10 May 2018 16:00:21 GMT\n
x-ms-version:2017-07-29\n
/MyStorage/dbstore/myFolder/test2.txt"

這是由SHA256Base64編碼生成的授權

SharedKey MyStorage:Oy8nB79/KVROzxYCYSF71djhIwYEYS36tgRqyxe6sXY=

此授權適用於GET請求,我嘗試獲取所有容器名稱,但成功。

我的HttpRequestMessage看起來像

{Method: PUT, RequestUri:             
'http://MyStorage.blob.core.windows.net/dbstore/            
myFolder/test2.txt', Version: 1.1, Content: 
System.Net.Http.ByteArrayContent, Headers:
{
  x-ms-date: Fri, 11 May 2018 06:39:35 GMT
  x-ms-version: 2017-07-29
  Authorization: SharedKey     
storagekaren:Oy8nB79/KVROzxYCYSF71djhIwYEYS36tgRqyxe6sXY=
  Content-Length: 11
  Content-MD5: CAQ66JnJH0H9GhrLTy+b1w==
}}
    Content: {System.Net.Http.ByteArrayContent}
    Headers: {x-ms-date: Fri, 11 May 2018 06:39:35 GMT
x-ms-version: 2017-07-29
Authorization: SharedKey     
storagekaren:Oy8nB79/KVROzxYCYSF71djhIwYEYS36tgRqyxe6sXY=
}
    Method: {PUT}
    Properties: Count = 0
    RequestUri: {http://MyStorage.blob.core.windows.net/dbstore/myFolder/test2.txt}
    Version: {1.1}

我在請求中錯過了什么?

放入Blob時需要添加兩個參數

  • x-ms-blob-type必須包含在HttpRequestMessage標頭中。
  • Content-MD5是可選的,但是如果將其添加到請求標頭中,則它也應該包含在StringToSign中,即您提到的簽名。

還有其他問題,問一下即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM