Angularjs重定向到https

时间:2016-02-17 10:41:25

标签: angularjs https angular-ui-router

如何将http页面重定向到https?

我在login.config中尝试过这个代码块,但它转到http并导航到https。我想首先解决https问题。

    resolve: {
        data: function ($q, $state, $timeout, $location, $window) {
            var deferred = $q.defer();

                if ($location.protocol() !== 'https') {
                    $window.location.href = $location.absUrl().replace('http', 'https');
                }
                deferred.resolve(true);


            return deferred.promise;
        }
    }

由于

2 个答案:

答案 0 :(得分:1)

您应该使用网络服务器重定向到https。

例如,如果您正在使用nginx编辑nginx.conf的服务器部分

server {
       listen         80;
       server_name    my.domain.com;
       return         301 https://$server_name$request_uri;
}

server {
       listen         443 ssl;
       server_name    my.domain.com;
       # add Strict-Transport-Security to prevent man in the middle attacks
       add_header Strict-Transport-Security "max-age=31536000"; 

       [....]
}

答案 1 :(得分:1)

我相信你正在解决错误的问题。您的AngularJS项目托管在某种服务器上(NodeJS,Apache HTTP,NGINX等)。该服务器应该负责重定向!

对于Apache HTTP,您可能需要查看:https://wiki.apache.org/httpd/RedirectSSL

对于NGINX,你的配置会有类似的东西:

server {
  listen 80 default_server;
  listen [::]:80 default_server;
  server_name _;
  return 301 https://$host$request_uri;
}