[英]Why appending "/" to base-href removes the need of deploy url?
我的 angular 应用程序与 java 应用程序捆绑并部署在一起。 Angular AOT 构建放置在文件夹WebContent/app
中。
在进行 AOT 构建时,
--base-href /app
,我会在加载 index.html 后得到 404。 在这种情况下,我必须在构建期间添加--deploy-url /app/
,以使应用程序正常工作。--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 的基础。
所以进入我的问题
<base href="/app">
时,浏览器将href
视为文件而不是目录。 因此,基本 URL 不会被添加到相对 URL 之前。<base href="/app/">
时,浏览器将其视为一个目录,并且所有相对 URL 将由基本 URL 前置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.