繁体   English   中英

为什么 ContentSettings cache_control max-age 没有通过 Python 在 Azure 存储 blob 中得到尊重?

[英]Why isn't ContentSettings cache_control max-age being honored in Azure storage blob via Python?

我似乎无法通过以下代码在 Python 中的 Azure 存储 blob 中激活 Cache-Control max-age

 contentSettings = ContentSettings(cache_control="max-age=86400")  
 containerClient.upload_blob(blobname, theBytes, length=byteCount, 
        overwrite=True, content_settings=contentSettings)

在基于 Azure 存储浏览器的 web 中,显示max-age设置正确: Azure 存储浏览器

但是,下载 blob 时, max-age似乎不会传播到浏览器客户端。 该文件已正确下载,但从未缓存在客户端中。 如果重要的话,我正在使用 axios 来检索文件:

axios.get(url, { responseType: "arraybuffer" })...

这是文件的 chrome developer.network 视图。 注意max-age缺失:

铬合金

另一个奇怪之处: ContentSettings的 Azure 文档包含以下短语:如果先前已为 blob 设置了 cache_control,则存储该值。 这到底是什么意思?

我究竟做错了什么?

一个可能的原因可能是 CORS 设置阻止了响应标头暴露给客户端。

请检查存储帐户上 blob 服务的公开标Exposed Headers CORS 设置,并确保公开所有x-ms-*响应标头。

您也可以尝试通过设置* (即所有响应标头)来暴露 header CORS 设置。

感谢 Gaurav 的建议。 原来问题是(通常情况下)是我自己的愚蠢。 我通过 ASP.net 核心控制器/服务获取文件,这并没有传播从 Azure blob 获取的EtagCache-Control值。

似乎很好奇似乎没有一种简单的方法可以做到这一点。 我发现的所有 Azure blob ASP.net 核心示例都是手动复制各个 blob 属性,而不是自动传播它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM