首页 > 解决方案 > Angular HttpClient 获得状态 0(Safari 和 IE)

问题描述

我正在使用 Angular HttpClient。问题是有时会发生错误,并且客户端会返回状态 0“未知错误”。我们发现该问题仅发生在我们生产环境中的 Safari(iOS 和 Mac)和 Internet Explorer 11 中。

作为一种解决方法,我们在游戏中加入了一个 HttpInterceptor,它会进行 5 次重试,每次重试间隔 300 毫秒。这似乎可以解决问题。但我想知道根本原因。

我读过其他人也有同样的问题,但这里似乎与 CORS 相关。但是由于问题是通过重试解决的,所以不应该是CORS。正确的?

我的 HttpClient.get:

public getData(): Observable<Hentdata> {
  return this.httpClient.get<Hentdata>('api/hent')
            .pipe(catchError(err => this.handleError(err)));
}

更新 #1:我们的应用程序前面有一个 F5 Big IP 负载均衡器。我读到在这方面保持活动可能存在一些问题。

有什么建议么?

标签: angularsafariinternet-explorer-11angular-httpclient

解决方案


IE控制台中是否还有其他错误消息?

在大多数情况下,它们是 CORS 问题。您可以尝试使用 Fiddler,然后尝试使用 IE 访问该站点,看看它是否有效。如果这可行,我认为这是 CORS 问题。在 Fiddler 的 AutoResponder 中,您可以编辑规则以具有Access-Control-Allow-Origin包含请求站点来源值的响应标头。

除了 CORS 问题之外,错误代码还有许多其他原因。您可以参考此答案以获取详细信息。它可能与负载均衡器有关,例如在请求期间断开连接或请求超时。您可以在 IE 中加载没有负载均衡器的应用,以查看问题是否仍然存在。如果它在没有负载均衡器的情况下也能正常工作,那么您可以说问题出在负载均衡器上。


推荐阅读