【发布时间】:2021-02-03 14:06:33
【问题描述】:
在每个 Blazor 项目中,index.html 或 _Host.razor 内部都有一个 <base href="/">(取决于您使用的是 Blazor WebAssembly 还是 Blazor Server)。
现在,我知道what this tag does,只要放在其href 属性内的任何值都会被添加到HTML 文档中的每个相对路径。
但是,我不明白为什么在每个 Blazor 项目中都默认放置它。例如,如果您使用 Blazor WebAssembly,则在 index.html 文件的末尾有以下行:
<script src="_framework/blazor.webassembly.js"></script>
这条路径的开头显然没有/,因为文档中存在<base href="/" />,但是为什么他们不能简单地在这条路径中添加一个前导/以消除需要完全为base 标签?!为什么要添加基本标签?!
我也尝试过手动删除<base href="/" /> 标签,而是在所有路径中添加了一个前导/,但后来我很快发现这样做会导致问题:
如果您的页面具有类似/counter/something 的路径(超过两个级别),那么blazor.webassembly.js 文件在加载后会将其他所需的JS 文件和程序集动态添加到HTML 页面,添加它们时不带前导斜线,基本上假设有一个<base href="/" />。
例如,blazor.webassembly.js 使用此路径“_framework/blazor.boot.json”加载文件。但在我刚才解释的场景中,这会导致 404 错误,因为这是一个相对路径并且没有“/counter/_framework/blazor.boot.json”。
因此,这基本上意味着在每个 Blazor 应用程序中都必须拥有 <base href="/" />!但是为什么呢?!
【问题讨论】:
-
这stackoverflow.com/questions/58827912/…>能回答你的问题吗?
-
@Igrutinovic_l 我实际上在发布我的问题之前就看到了这个问题,但不幸的是,它没有。那里的 OP 提出了一个不同的问题。
-
其他问题确实为您提供了大部分答案:它是您在某些情况下可能需要的配置点。使其与您的托管设置相匹配。
标签: blazor blazor-server-side blazor-client-side blazor-webassembly