TL;博士
您需要在 blob 存储上配置默认版本,以便它向未经过身份验证的客户端显示所需的标头。这个问题中的问题具有使其工作的代码。
一旦设置好,并且为匿名客户端工作,CDN 将复制所有标头,它应该可以按预期工作。
设置 ContentDisposition
该功能存在,您可以在blob 属性上设置 ContentDisposition但是,虽然这会在 blob 上设置属性,但它不会传递到标头。
我使用以下方法使用 Powershell 进行了测试(只是因为它比 c# 快)
$context = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey
$container = Get-AzureStorageContainer -Name $ContainerName -Context $context
$blobref = ($script:container.CloudBlobContainer.GetBlobReferenceFromServer("images/pier.jpg"))
$blobref.Properties
$blobref.Properties.ContentDisposition = 'attachment; filename="fname.ext"'
$blobref.SetProperties()
$blobref = ($script:container.CloudBlobContainer.GetBlobReferenceFromServer("images/pier.jpg"))
$blobref.Properties
产生(除其他外)
ContentDisposition : 附件;文件名="fname.ext"
但是,查询标头时未设置任何内容
([system.Net.HttpWebRequest]::Create($blobref.Uri.AbsoluteUri)).getresponse()
(回答评论,。这些是返回的标题 - 在试验时我也尝试过使用和不使用内容类型 - 因此这里它是空白的)
IsMutuallyAuthenticated : False
Cookies : {}
Headers : {x-ms-request-id, x-ms-version, x-ms-lease-status, x-ms-blob-type...}
SupportsHeaders : True
ContentLength : 142224
ContentEncoding :
ContentType :
CharacterSet :
Server : Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
LastModified : 01/03/2016 11:29:04
StatusCode : OK
StatusDescription : OK
ProtocolVersion : 1.1
ResponseUri : https://xxxx.blob.core.windows.net/cdn/images/pier.jpg
Method : GET
IsFromCache : False
而且由于 CDN 只会从 HTTP 标头本身复制信息,因此这些数据不会进入 CDN。
编辑(在扩展评论聊天之后!)
出于众所周知的原因,Powershell 没有发送 x-ms-version,所以我退回到 telnet,它确实产生了标题 -
HEAD /cdn/images/pier.jpg HTTP/1.1
HOST: xxxx.blob.core.windows.net
x-ms-version: 2015-04-05
HTTP/1.1 200 OK
Content-Length: 142224
Last-Modified: Tue, 01 Mar 2016 11:29:04 GMT
Accept-Ranges: bytes
ETag: "0x8D341C4B1C4F34F"
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: b4f41b01-0001-00d7-7cc9-7384c9000000
x-ms-version: 2015-04-05
x-ms-lease-status: unlocked
x-ms-lease-state: available
x-ms-blob-type: BlockBlob
Content-Disposition: attachment; filename="fname.ext"
Date: Tue, 01 Mar 2016 14:49:17 GMT