![](/img/trans.png)
[英]Azure queue receiving with python SDK: ValueError: could not convert string to float: max-age=31536000
[英]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
设置正确:
但是,下载 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 获取的Etag
和Cache-Control
值。
似乎很好奇似乎没有一种简单的方法可以做到这一点。 我发现的所有 Azure blob ASP.net 核心示例都是手动复制各个 blob 属性,而不是自动传播它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.