嘿,我有基于此入门套件的应用程序
我使用server.ts
中的 SSR 功能部署我的应用程序。
并且该应用程序正在通过 Apache 反向代理"动态"提供给多个域的 localhost:4002。
即domainA.com
并且domainB.com
指向具有修订代理的同一本地主机:4002。 所有域都使用相同的应用实例 目前为止,一切都好。
但是现在我要求它在我们的合作伙伴反向代理下工作,看起来像这样partner.com/app/
会将代理反向为partner.domainA.com
这在加载 JS 时会导致很多问题。
目前,base-href 设置为/
,这在我们的网站上工作得很好。 但是当用户转到partner.com/app
浏览器会尝试从partner.com/*.js
加载所有 JS 资产,而 仅在partner.com/app/*.js
或partner.domainA.com/*.js
上可用。
我可能的解决方案是在请求到达时从 server.ts 设置APP_BASE_HERF
。
但我尝试的每件事似乎都没有奏效。
我尝试按照本指南进行操作,但它似乎不起作用,它正在从window
对象加载 url,而我需要从只能从req.headers.host
可用的原始主机进行设置
在 server.ts 中:
res.render(
'../dist/index',
{
req: req,
res: res,
// provers from server
providers: [
// for http and cookies
{
provide: REQUEST,
useValue: req,
},
{
provide: RESPONSE,
useValue: res,
},
/// for cookie
{
provide: NgxRequest,
useValue: req,
},
{
provide: NgxResponce,
useValue: res,
},
// for absolute path
{
provide: 'ORIGIN_URL',
useValue: `${http}://${req.headers.host}`,
},
],
},
有没有办法将ORIGIN_URL放在索引中.html base-herf? 以这种方式设置基础的正确方法是什么?
谢谢
将 main.ts 更改为 :-
window['base-href'] = window.location.pathname;
if (env.production) {
enableProdMode();
}
platformBrowserDynamic().bootstrapModule(AppModule);
在上面的代码中,将 URL 更改为基本 href JSON 所在的位置。
在应用程序模块中添加此提供程序:-
providers: [
{
provide: APP_BASE_HREF,
useValue: window['base-href']
}
]