当前,我正在努力从浏览器中读取URL并将其分配为全局URL,而不是对base_url
进行硬编码,我需要从浏览器中读取它,并将其修补到所有服务中。网址。我已经尝试过执行此操作,但是此代码有效,但是问题是,一旦重新加载屏幕,所有API都会失败。
代码
setTimeout(() => {
if (environment.production) {
base_url = window.location.origin + '/APPLICATION/resources/';
}else {
base_url = 'http://106.51.66.219:1234/APPLICATION/resources/' ;
}
}, 1000);
还有什么更好的方法来设置base_url
,即使单击刷新后它也可以正常工作。
答案 0 :(得分:0)
在使用angularjs时,您可以尝试使用$ location服务从浏览器获取URL,如下所示,当重新加载页面时,它也将正常工作
setTimeout(() => {
if (environment.production) {
base_url = $location.protocol()+'//'+$location.host() + '/APPLICATION/resources/';
}else {
base_url = 'http://106.51.66.219:1234/APPLICATION/resources/' ;
}
}, 1000);
并且如果在生产环境中url中有端口,则必须编写一些条件以在url中加入端口($ location.port())
答案 1 :(得分:0)
两件事:
请勿将此类配置公开给客户端。在生产版本中,人们可以看到您的dev endpoint
。尝试将此类配置尽可能地移至构建/捆绑系统。
在service
或constants.ts
文件中定义所有此类常量是一个好主意。正如@plalx
答案 2 :(得分:0)
您可以在此处使用标准JS:
window.location.href
但是您宁愿使用Angular路线:
constructor(route: ActivatedRoute) {
const url: Observable<string> = route.url.map(segments => segments.join(''));
url.subscribe((url) => console.log(url));
}