【问题标题】:Why is there a <base href="/" /> in Blazor's index.html or _Host.razor file?为什么 Blazor 的 index.html 或 _Host.razor 文件中有一个 <base href="/" />?
【发布时间】:2021-02-03 14:06:33
【问题描述】:

在每个 Blazor 项目中,index.html_Host.razor 内部都有一个 &lt;base href="/"&gt;(取决于您使用的是 Blazor WebAssembly 还是 Blazor Server)。

现在,我知道what this tag does,只要放在其href 属性内的任何值都会被添加到HTML 文档中的每个相对路径。

但是,我不明白为什么在每个 Blazor 项目中都默认放置它。例如,如果您使用 Blazor WebAssembly,则在 index.html 文件的末尾有以下行:

<script src="_framework/blazor.webassembly.js"></script>

这条路径的开头显然没有/,因为文档中存在&lt;base href="/" /&gt;,但是为什么他们不能简单地在这条路径中添加一个前导/以消除需要完全为base 标签?!为什么要添加基本标签?!

我也尝试过手动删除&lt;base href="/" /&gt; 标签,而是在所有路径中添加了一个前导/,但后来我很快发现这样做会导致问题: 如果您的页面具有类似/counter/something 的路径(超过两个级别),那么blazor.webassembly.js 文件在加载后会将其他所需的JS 文件和程序集动态添加到HTML 页面,添加它们时不带前导斜线,基本上假设有一个&lt;base href="/" /&gt;

例如,blazor.webassembly.js 使用此路径“_framework/blazor.boot.json”加载文件。但在我刚才解释的场景中,这会导致 404 错误,因为这是一个相对路径并且没有“/counter/_framework/blazor.boot.json”。

因此,这基本上意味着在每个 Blazor 应用程序中都必须拥有 &lt;base href="/" /&gt;!但是为什么呢?!

【问题讨论】:

  • 这stackoverflow.com/questions/58827912/…>能回答你的问题吗?
  • @Igrutinovic_l 我实际上在发布我的问题之前就看到了这个问题,但不幸的是,它没有。那里的 OP 提出了一个不同的问题。
  • 其他问题确实为您提供了大部分答案:它是您在某些情况下可能需要的配置点。使其与您的托管设置相匹配。

标签: blazor blazor-server-side blazor-client-side blazor-webassembly


【解决方案1】:

来自here

应用基本路径是应用的根 URL 路径。考虑以下 ASP.NET Core 应用和 Blazor 子应用:

在没有为 CoolApp 指定额外配置的情况下,这个场景中的子应用不知道它在服务器上的位置。例如,应用无法在不知道它位于相对 URL 路径 /CoolApp/ 的情况下为其资源构建正确的相对 URL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 2021-02-18
    • 2017-10-21
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    相关资源
    最近更新 更多