angular - 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 负载均衡器。我读到在这方面保持活动可能存在一些问题。
有什么建议么?
解决方案
IE控制台中是否还有其他错误消息?
在大多数情况下,它们是 CORS 问题。您可以尝试使用 Fiddler,然后尝试使用 IE 访问该站点,看看它是否有效。如果这可行,我认为这是 CORS 问题。在 Fiddler 的 AutoResponder 中,您可以编辑规则以具有Access-Control-Allow-Origin
包含请求站点来源值的响应标头。
除了 CORS 问题之外,错误代码还有许多其他原因。您可以参考此答案以获取详细信息。它可能与负载均衡器有关,例如在请求期间断开连接或请求超时。您可以在 IE 中加载没有负载均衡器的应用,以查看问题是否仍然存在。如果它在没有负载均衡器的情况下也能正常工作,那么您可以说问题出在负载均衡器上。
推荐阅读
- c - 访问数组时出现 OpenMP 段错误
- r - 在ggplot2中没有分箱的点图
- flutter - 如何像下图那样在颤动中进行步进式设计?
- sql - 如何在 Power BI 中使用 SQL 临时表
- java - 将列表拆分为子列表,并将它们逐个传递给算法
- python-3.x - 是否有任何可靠的方法可以在 Python 中的数据帧上定义和校准函数
- c# - String variable passed from View to Controller always arrive as NULL in Controller
- python - 如何将一系列对象转换为日期时间,同时考虑 UTC
- css - 如何使用 Grid 使组件准确居中?
- android - 无法构建依赖于其他模块的 gradle