我对 Angular 5 + Angular Universal + Https 协议有一个奇怪的问题。/:lang
除了带有路由的主页之外,我可以在每个页面上的浏览器中检查视图源。我为主页做了 AuthGuard:
import { Injectable } from '@angular/core';
import { CanActivate } from '@angular/router';
import { Router } from '@angular/router';
import { Config } from '../config';
@Injectable()
export class AuthGuard implements CanActivate {
langUrl : string;
constructor(private router: Router, private config: Config) {
this.langUrl = this.config.getLanguage();
}
canActivate() {
this.router.navigate(['/' + this.langUrl]);
return true;
}
}
它适用于每个平台服务器/浏览器。在配置中,我的功能getLanguage()
如下所示:
isSessionAvaible() {
var test = 'test';
try {
localStorage.setItem(test, test);
localStorage.removeItem(test);
return true;
} catch (e) {
return false;
}
}
getLanguage() {
if (this.isSessionAvaible()) {
return localStorage
.getItem('lang.url');
} else {
return this.defaultLang;
}
}
当我试图输入https://example.org
. Guard 总是将我重定向到https://example.org/en
那里,我在浏览器中看不到视图源。请参阅下面的屏幕。
当我删除 Node.js Express Server https 重定向时,它看起来像:
var forceSsl = function (req, res, next) {
if (req.headers['x-forwarded-proto'] !== 'https') {
return res.redirect(['https://', req.get('Host'), req.url].join(''));
}
return next();
};
app.use(forceSsl);
然后访问没有 https http://example.org
AuthGuard 的页面,将我重定向到http://example.org/en
浏览器中的查看源代码如下所示:
之后,当我尝试在https://example.org/
没有服务器 https 重定向的情况下进入时,视图源与第一个示例中的相同(使用 https 重定向)。
你知道怎么修理吗?如何在 https 主页上也显示视图源?