繁体   English   中英

为什么将“/”附加到 base-href 可以消除部署 url 的需要?

[英]Why appending "/" to base-href removes the need of deploy url?

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

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

我能观察到的是,如果我没有 append "/" 到 base-href,则发出的服务器请求使用上下文根 - http://localhost:9080/application-name/styles.***.ZC7A628CBA2AE2A28EB667B当我 append “/”时,服务器上下文根附加了app - http://localhost:9080/application-name/ app /styles.***.ZC7A628CBA22E28EB17B5F5C6AE2A26

为什么在 base-href 末尾添加“/”会产生所有这些差异?
有人可以解释这种行为,因为我在文档上找不到任何东西吗?

提前致谢。

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

Tha <base>标签是 HTML 规范的一部分: 链接

正如 MDN 文档所说,

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

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

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

更多信息可以在这里这里找到

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM