Angular HttpClient的状态为0Safari和IE

问题描述

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

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

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

我的HttpClient.get:

struct ContentView: View {
    var body: some View {
        NavigationView {
            Form {
                Section(header: Text("Info")) {
                    HStack {
                        Text("Name")
                        Spacer()
                        Text("someName")
                    }
                    HStack {
                        Text("Surname")
                        Spacer()
                        Text("someSurname")
                    }
                }
            }
            .navigationBarTitle("Profile")
        }
    }
}

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

有什么建议吗?

解决方法

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

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...