我正在使用 Angular http 模块来调用由自签名证书启用的 https 端点。
代码类似于下面所示:
export class AppComponent {
constructor(private http: HttpClient) {
}
title = 'my-app';
ngOnInit(): void {
this.http.get('https://internalapp.com/context/apps/all').subscribe((res: any[]) => {
console.log('sharief');
console.log(res);
});
}
}
当 Angular 应用程序在 Chrome 浏览器中运行时,会导致错误“net::ERR_CERT_AUTHORITY_INVALID”。此错误发生在 this.http.get(...) 方法调用上。
Node 的 https 模块有一个如下所示的选项,它似乎可以工作(来自 在此处输入链接描述:
var req = https.request({
host: '192.168.1.1',
port: 443,
path: '/',
method: 'GET',
rejectUnauthorized: false,
requestCert: true,
agent: false
},
问题:是否可以在 http.get 调用期间禁用证书验证?
不,这是浏览器的限制。
您可以将后端url放入您的浏览器中,告诉您的浏览器授权此调用,然后就可以了。
我一开始并没有完全理解上面的答案。为了让遇到这个问题的人清楚地了解,我想向您展示我是如何解决这个问题的。
我的 Angular 应用程序正在调用 API。浏览器不信任 API 的证书。
解决方案:
将 URL 从 API 复制到浏览器(@Deblaton Jean-Phillipe 在他的回答中说的)
这将向您显示证书。您可以在那里单击详细信息。在弹出窗口的底部,您可以将其导出。这样做并将其保存在您可以再次找到的地方。
在证书存储“受信任的根证书颁发机构”中安装证书
之后我的角度应用程序再次工作。