0

我有一堆 .htm 文件,它们可以导航到其他 .htm 文件。我已将它们上传到 Azure blob 容器。我想用 SAS 令牌打开第一个 .htm 文件,并想通过它访问其他人。但是,当这种情况发生时,其他人的 sas 令牌不再存在,因此我无法访问其他文件。

我最初尝试为整个 blob 容器获取 sas,但是问题仍然存在,因为当我使用第一个 .htm 中的链接导航到另一个时,问题仍然存在,因为它不会包含 sas 令牌。

因为有任何解决方法可以让他们打开吗?除了更改容器的权限以允许匿名访问。

4

1 回答 1

0

由于您的锚标记包含文件的名称(即相对路径)而不是 URL,因此这些 html 不能通过 Azure BLOB 直接相互链接,因为 BLOBS 可以通过 URL 访问。既然你提到你有很多这样的 html 文件,我建议你 托管一个静态网站,因为只有一个,即启动 .htm 文件需要更改。

出于身份验证的目的,您可以在起始 [first] .htm 文件中添加自定义 JavaScript 代码,您可以在其中验证 SAS 令牌是否存在且正确。像这样的东西

<script>
function validateToken(){
    const currentUrl = window.location.href;
    const SASToken = '?' + 'yourSASToken';
    if(currentUrl) {
        const token = currentUrl.split('.htm')[1];
        if(!token || token.length === 0 ||  token !== SASToken){
            window.location = 'error';
        }
    }
}
</script>
<body onload="validateToken();">
<H1>First.htm</H1>
<a href="second.htm">Next</a>
</body>
于 2020-08-06T18:22:01.897 回答