我正在使用 Azure Blob Storage 存储媒体文件并使用共享访问签名提供对这些文件的访问;在这方面一切都运作良好。
但是,我有一个客户端应用程序需要“恢复”对这些文件的访问,并使用 HTTP RANGE 标头来执行此操作。当它发出这样的请求时,它对从 Azure 返回的结果不满意。
我不确定如何在 Azure 端查看详细信息以查看请求是否失败,或者它是否只是返回了客户端未预期的内容,并且我对客户端没有调试可见性。
这是传入范围标头的样子:
RANGE: bytes=4258672-
从我读过的 Azure 文档中,它似乎支持 RANGE 标头,但是我想知道同时使用 RANGE 和共享访问签名是否存在冲突?
更新: Azure 可能会为 RANGE 请求返回不正确的状态代码,这导致我的客户端应用程序拒绝响应。文档指出,Azure 在响应 RANGE 请求时会以 HTTP 状态代码 206 进行响应,但是当我发出这样的 RANGE 请求时:
curl -I -H "User-Agent: Bonos" -r 500- "https://murfie.blob.core.windows.net/168464/1.mp3?st=2013-07-03T16%3A34%3A32.4832235Z&se=2013-07-03T17%3A34%3A32.4613735Z&sr=b&sp=r&sig=mJgQGW%2Fr3v8HN2%2BVV3Uady7J68nFqeHyzQb37HAhfuE%3D"
Azure 返回以下内容:
HTTP/1.1 200 OK
Content-Length: 19988911
Content-Type: application/octet-stream Charset=UTF-8
Last-Modified: Fri, 07 Jun 2013 16:44:50 GMT
ETag: 0x8D031B57670B986
Server: Blob Service Version 1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 77312761-65a9-42ef-90cd-ff718a80b231
Date: Wed, 03 Jul 2013 16:41:01 GMT