Angular Universal + Https - 主页查看源

时间:2018-02-13 09:47:29

标签: angular redirect https angular-universal view-source

我对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。见下面的屏幕。

HTTPS

当我删除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如下所示:

enter image description here

之后,当我尝试在没有服务器https重定向的情况下输入https://example.org/时,view-source与第一个示例相同(使用https重定向)。

你知道怎么修吗?如何在https主页上显示view-source?

0 个答案:

没有答案