因此,我們正在構建基於Web的音頻流式傳輸平臺,其中音頻文件存儲在BLOB存儲中。我們正在爲BLOB創建一個SAS URL,然後將其提供給JavaScript播放器(極光)。通過SAS訪問Azure blob存儲時禁止零星403
這在大部分情況下工作正常,但是當我切換軌道很多時,在某個點,我開始獲得403響應文件的HEAD請求。
如果我單擊重新發送螢火蟲,重新發送完全相同的請求,然後有時我仍然會得到相同的403錯誤,但一段時間後,請求將再次成功,這意味着URL形成正確。
下面是我得到
403 Server failed to authenticate the request. Make sure the value of
Authorization header is formed correctly including the signature.
Transfer-Encoding: chunked Server: Microsoft-HTTPAPI/2.0
x-ms-request-id: <removed>
access-control-expose-headers:
Content-Type,Accept-Ranges,Content-Encoding,Content-Length,Content-Range
Access-Control-Allow-Origin: * Date: Fri, 12 Aug 2016 06:31:58 GMT
我開始以爲某種對Blob存儲限制被觸發,如連接的最大數量或帶寬限制,可能是全響應甚至是DOS防守機制。 有沒有人有任何建議?
我讀過一些關於存儲診斷的文章,但他們都提到了舊的Azure門戶。我的存儲帳戶僅在新門戶中可見。 所以我的問題是:任何人都可以指導我使用新的Azure門戶來診斷爲什麼請求被拒絕?
編輯: 我已經使用Azure Management Studio來查看存儲帳戶的日誌。我發現這個的logline在那裏,它指定了「SASNetworkError」:
1.0;2016-08-12T10:26:27.7337647Z;GetBlob;SASNetworkError;206;19002;6;sas;;[xxx];blob;"https://[xxx].blob.core.windows.net:443/files/[xxx].flac?sv=2015-04-05&sr=b&si=flacpolicy636065943797947863&sig=XXXXX&sip=[xxx]";"/[xxx]/files/[xxx].flac";8f7d48a3-0001-0017-5983-f499a7000000;0;[xxx]:40690;2015-04-05;637;0;499;0;0;;;""0x8D35C8CDDD72689"";Monday, 04-Apr-16 13:27:27 GMT;;"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0";"http://[xxx].azurewebsites.net/";
看起來這是錯誤的原因,但我無法弄清楚它是什麼,真實失敗。
Azure存儲不會耗盡連接容量 - 這是一個相當龐大的多租戶存儲系統。您是否嘗試過將SAS開始時間稍微設置爲過去,也許是一兩分鐘(並且可能在未來有點結束,如果是有效期短的話)?時鐘漂移可能會導致您的SAS在短時間內無意中失效。 –
感謝大家的建議。我確信Azure可以將它作爲一個系統來處理,但我更多地考慮了我們帳戶的具體限制。我將開始時間留空,但我現在試着將它設置爲昨天。我也將到期時間設置爲未來幾年,但沒有骰子......錯誤仍在發生。 –