我有一堆 .htm 文件,它们可以导航到其他 .htm 文件。我已将它们上传到 Azure blob 容器。我想用 SAS 令牌打开第一个 .htm 文件,并想通过它访问其他人。但是,当这种情况发生时,其他人的 sas 令牌不再存在,因此我无法访问其他文件。
我最初尝试为整个 blob 容器获取 sas,但是问题仍然存在,因为当我使用第一个 .htm 中的链接导航到另一个时,问题仍然存在,因为它不会包含 sas 令牌。
因为有任何解决方法可以让他们打开吗?除了更改容器的权限以允许匿名访问。
由于您的锚标记包含文件的名称(即相对路径)而不是 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>