3

当我们使用该ng serve命令时,在编译过程中会出现以下消息:

** NG Live Development Server is running on http://localhost:4200** <==== @angular/cli 的旧版本

** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/** <==== @angular/cli 的最新版本

是否可以在 localhost 上配置开发服务器以使用 https 协议?换句话说,以下内容可以作为浏览器中的 URL 正常工作:

https://localhost:4200

我们尝试了如下所示的命令,但它仍然导致使用 http 协议:

ng serve my-app —-ssl true --ssl-cert "./ssl/localhost.crt" --ssl-key "./ssl/localhost.key" --open

笔记:

  1. 按照正确的步骤为 Mac El Capitan 环境提供 SSL 证书(通过使用 node.js 和 express 启动具有 https URL 的服务器来确认 SSL 证书的正确配置)。

  2. 在 @angular/cli 版本 1.0.0-rc.4 和 6.2.5 中都观察到了这个结果

  3. 为什么我们无法将 localhost 开发服务器配置为在https://localhost:4200下运行?

  4. 我们解决这个问题的动机是我们使用 Facebook 登录我们的应用程序,现在他们要求您从 https 页面进行 Facebook API 调用。我们有通过 https 运行的 Angular 应用程序的生产版本。但是,在尝试开发和测试代码时,我们使用 localhost 来运行我们的测试。为了做到这一点,我们需要我们的测试环境在 https 上下文中运行。

4

1 回答 1

2

我观察到发出以下命令:

$ ng serve --ssl true --ssl-cert "./ssl/localhost.crt" --ssl-key "./ssl/localhost.key" 

将间歇性地正确使用 https 环境。

以下信息已启用“间歇性”问题的解决方案:

启动 Angular 开发服务器的代码位置:.../node_modules/@angular/cli/tasks/server.js

可以通过放置以下行来修改此代码以解决间歇性 https 的问题:

if (serveTaskOptions.sslKey === './ssl/localhost.key') serveTaskOptions.ssl = true; // kludge to fix intermittent https problem 

在以下行之前:

const serverAddress = url.format({
于 2018-10-26T20:09:58.240 回答