Angular 2 + Heroku,总是重定向到https://,而不是使用http://

时间:2017-03-01 20:33:26

标签: angular heroku

我有一个在Heroku中托管的Angular 2的应用程序,我想将所有http请求重定向到https,这样做的正确方法是什么?谢谢!

1 个答案:

答案 0 :(得分:5)

如果您希望将任何URL重定向到其https等效项,请将此类实现为服务。该类检查开发人员模式,以便只有在prod中部署应用程序时才会发生重定向。

import {Injectable, isDevMode} from '@angular/core';
import {CanActivate, ActivatedRouteSnapshot} from '@angular/router';

@Injectable()
export class IsSecureGuard implements CanActivate {

  canActivate(route: ActivatedRouteSnapshot): boolean {
    if (!(isDevMode()) && (location.protocol !== 'https:')) {
      location.href = 'https:' + window.location.href.substring(window.location.protocol.length);
      return false;
    }
    return true;
  }

}

这种守卫必须适用于每条道路。例如:

 {path: 'mypath', component: MyPathComponent, canActivate: [IsSecureGuard]}