我正在构建一个ASP.NET Azure Web应用程序(Web角色),它控制对Azure Blob存储中存储的文件的访问。 在GET请求中,我的HttpHandler对用户进行身份验证,并为此特定文件和用户创建一个共享访问签名,时间范围很短(比如30分钟)。客户端是使用HEAD检查更新的媒体文件的媒体播放器,如果Last-modified标头不同,它将发出GET请求。因此,我不想创建SAS URL,而是返回LAst-modified,Etag和Content-length头以响应HEAD请求。这是不好的做法吗?如果文件是最新的,则无需再次下载文件,因此无需创建SAS URL。
示例请求:
GET /testblob.zip
Host: myblobapp.azurewebsites.net
Authorization: Zm9v:YmFy
回应:
HTTP/1.1 303 See other
Location: https://myblobstorage.blob.core.windows.net/blobcontainer/testblob.zip?SHARED_ACCESS_SIGNATURE_DATA
有什么想法吗?
答案 0 :(得分:0)
是否有特定原因强制客户端首先发出HEAD请求?它可以使用您的服务进行身份验证,获取SAS令牌,使用针对Azure存储的If-Modified-Since标头发出GET请求,并仅在上次下载后修改了Blob。有关Azure存储Blob服务支持的条件标头的详细信息,请参阅Specifying Conditional Headers for Blob Service Operations。