我对Angular 5 + Angular Universal + Https协议有奇怪的问题。我可以使用/:lang
路由在除主页之外的每个页面上查看浏览器中的view-source。我为主页做了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
,在那里我无法在浏览器中看到view-source。见下面的屏幕。
当我删除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
,浏览器中的view-source如下所示:
之后,当我尝试在没有服务器https重定向的情况下输入https://example.org/
时,view-source与第一个示例相同(使用https重定向)。
你知道怎么修吗?如何在https主页上显示view-source?