默认情况下,如果我们运行 Angular 应用程序,它们将使用 http
(例如 http://localhost:4200
)运行。
如何将它从http
转换为使用https
?
最佳答案
简单的修复是代替运行:
ng s -o
使用额外的属性运行它:
ng s -o ---ssl true
它将在 https://localhost:4200
上运行。但是,如果您有一个 .crt
和一个 .key
文件,那么还要添加该属性。
您会看到一个以 https 开头的浏览器,尽管它会显示“不安全”作为警告。
如果您只想在 https 上运行并且不关心“不安全”消息,这就足够了。如果您确实在意,请继续执行进一步的说明。
ng s -o ---ssl true --ssl-key <path to key file> --ssl-cert <path to crt file>
或者给出.key
和.crt
文件的相对路径。
如果您不想每次都提供这些属性,或者不想为 Angular 运行一个完整的 NGINX 服务器,那么将这些属性添加到 angular.json
或angular-cli.json
取决于 Angular 版本:
"serve":
{
"builder": "@angular-devkit/build-angular:dev-server",
"options":
{
"browserTarget": "ideationapp:build",
"ssl": true,
"sslKey": "ssl/server.key",
"sslCert": "ssl/server.crt",
}
}
如果您没有.key
和.crt
文件,则不需要sslkey
和sslcert
。
在这里,我假设两个文件都在 ssl
目录中,其中 src.现在,仅运行 ng s -o
就足以通过 angular.json
文件使用证书。
如何为您的机器或一个用户创建本地主机的临时修复。
要求:
- Git 庆典 ( Download fom here )
现在转到 Git bash 并一次输入一个命令
git clone https://github.com/RubenVermeulen/generate-trusted-ssl-certificate.git(cloned to local computer)
cd generate-trusted-ssl-certificate(Going to application path)
bash generate.sh(starting shell script wher we called openssl)
克隆的应用程序使用 openssl(用于保护计算机网络通信免受窃听或需要识别另一端身份的应用程序的软件库)生成 .crt 和 .key文件
它将创建server.key
和server.crt
文件。
现在点击server.crt
对于 OS X
- 双击证书(server.crt)
- 选择您想要的钥匙串(keychain)(登录就足够了)
- 添加证书
- 如果钥匙串(keychain)访问尚未打开,请打开它
- 选择您之前选择的钥匙串(keychain)
- 您应该看到本地主机证书
- 双击证书
- 扩大信任
- 选择“使用此证书时始终信任”选项
- 关闭证书窗口
Windows 10
- 双击证书(server.crt)
- 点击“安装证书……”按钮
- 选择是将其存储在用户级别还是机器级别
- 点击“下一步”
- 选择“将所有证书放入以下存储区”
- 点击“浏览”
- 选择“受信任的根证书颁发机构”
- 点击“确定”
- 点击“下一步”
- 点击“完成”
- 如果出现提示,请单击"is"
The certificate is now installed.
现在将证书存储在 ssl
目录中。
现在使用命令行来提供 ssl key 和证书,或者将这些文件添加到 angular.json
(或 angular-cli.json
,具体取决于您的 Angular 版本).
你不会看到任何“不安全”,如果你点击地址栏旁边的锁图标,它会显示“安全”。
但是,如果您要在其他笔记本电脑上运行该应用程序,它将显示“不安全” 因为他们没有安装证书(受信任)。
关于angular - 默认情况下使用 http 运行时如何使用 https 运行 Angular?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54453112/