【问题标题】:Why appending "/" to base-href removes the need of deploy url?为什么将“/”附加到 base-href 会消除部署 url 的需要?
【发布时间】:2021-07-22 12:07:39
【问题描述】:

我的 Angular 应用程序与 java 应用程序捆绑并部署在一起。 Angular AOT 构建位于文件夹 WebContent/app
在进行 AOT 构建时,

  1. 如果我指定--base-href /app,我会在加载 index.html 后得到 404。在这种情况下,我必须在构建过程中添加 --deploy-url /app/,以使应用程序正常运行。
  2. 但是,如果我指定--base-href /app/,那么脚本、样式和其他资源会正确提供。并且无需指定--deploy-url

我可以观察到,如果我不将“/”附加到 base-href,则发出的服务器请求使用上下文根 - http://localhost:9080/application-name/styles。** *.css,当我附加“/”时,服务器上下文根会附加app - http://localhost:9080/application-name/app/styles.***。 css

为什么在 base-href 末尾添加“/”会产生不同的影响?
由于我在文档上找不到任何内容,有人可以解释这种行为吗?

提前致谢。

【问题讨论】:

    标签: java angular build


    【解决方案1】:

    经过一番挖掘,我找到了答案。它根本与 Angular 无关。

    <base> 标签是 HTML 规范的一部分:Link

    正如 MDN 文档所说,

    HTML 元素指定用于文档中所有相对 URL 的基本 URL。一个文档中只能有一个 元素。

    用于指定相对 URL 的基础。
    所以进入我的问题

    1. 使用<base href="/app"> 时,浏览器会将href 视为文件而不是目录。因此,基本 URL 不会添加到相对 URL 之前。
    2. 当使用<base href="/app/"> 时,浏览器会将其视为目录,所有相对 URL 都将添加基本 URL。

    更多内容请关注herehere

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-24
      • 2012-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-11
      相关资源
      最近更新 更多