Azure 存储 - 公开具有文件结构的容器

标签 azure azure-storage azure-blob-storage

我正在尝试在私有(private) azure blob 存储容器中上传一个文件夹结构,其中包含一个 html 文件,该文件引用该文件夹结构内的 css 和 javascript 文件。

当浏览 html 文件时,我希望它检索 css 和 javascript 文件,就像您看到它是否是作为网站一部分的 html 文件一样。

如果容器是完全公开的,我可以完成这项工作,但当容器是私有(private)的并且我提供 SAS token 时,我很难获得相同的结果。

假设容器包含一个名为“main.html”的html文件和一个名为“css/mystyles.css”的css文件(main.html将具有指向以下相对url“css/”的css文件的链接标记mystyles.css")。

如果我为容器创建 SAS token (为简单起见,我们将其称为“mySAS”),然后导航到 main.html 文件,附加 SAS token ,如下所示:
https://my-storage-account.blob.core.windows.net/container-name/main.html?mySAS

main.html 文件将正确加载,因为 SAS token 将附加在末尾,但 css 文件不会,因此它将返回 404。

我想我已经知道答案了,但是在技术上是否可以存储和呈现 html 文件及其所有关联文件而不将其放入公共(public)容器中?

我应该注意,修改 html 文件中指定的路径不是一个选项,因为它们是我无法控制的文件,所以我不知道它们会是什么样子。


有一些(非常困惑且不受欢迎的)混合解决方案,我将其放置在私有(private)容器中,然后按需将其公开,一段时间后将其切换回私有(private)容器。

或者选择更极端的混合解决方案,我将其存储在一个私有(private)容器中(永远不会暴露),然后每当需要时,将内容复制到一个短暂的公共(public)容器中(减少有人记下的风险)在第一个混合场景中使用公共(public)容器,然后在稍后可能不适合他们使用时再次访问它)。

如果可能的话,我真的宁愿坚持使用私有(private)容器和 SAS token 解决方案。

最佳答案

如果您的问题是关于重用 SAS token :您不能。你必须生成一个URL+SAS组合,SAS是基于URL的哈希。您不能只创建一次 SAS token ,然后将其附加到 URL。否则,没有什么可以阻止某人猜测 URL 并将一个 URL 的 SAS 附加到另一个 URL。

如果目标是拥有一个没有后端逻辑的静态网站,那么您需要公开您的内容(或者您必须预先生成所有 URL 才能正确附加 SAS)。

如果您想要动态访问(例如,您不知道将提供什么内容),则需要某种类型的后端应用程序服务器来提供内容(例如,返回带有适当的基于 SAS 的链接的新 html 页面嵌入到各种标签中)。

关于Azure 存储 - 公开具有文件结构的容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40370066/

相关文章:

azure - Arduino MKR1000 如何向 Azure IoT 中心发送消息

asp.net-mvc - 在 Office Web Apps 中从 ASP.NET 打开 Excel/Word 文档进行编辑?

python - 将 azure blob 下载到本地文件系统时发生异常

azure - 如何读取Azure存储 key

c# - 云 block Blob : DownloadTextAsync and UploadTextAsync and Metadata/Properties

c# - 如何从 angularjs 正确地将视频文件上传到 Azure 媒体服务

python-3.x - BlockBlobService 类位于 Python Azure 模块中的什么位置?

azure - 部署到 Azure 的服务总线

python - 将 Azure Blob 从流附加到 SendGrid 电子邮件

azure - 如何导出和导入Azure Function的 "application settings"