Angular6-GET net :: ERR_CONNECTION_REFUSED的HttpClient错误处理

时间:2018-12-20 20:07:55

标签: angular http error-handling

在使用HttpClient的Angular6中,是否仍然存在GET net :: ERR_CONNECTION_REFUSED错误/异常?对于典型的http请求,我通常会看到一个错误/类型为HttpErrorResponse的异常,例如404 Not Found。但是,对于某些不存在端口或远程服务的http请求以及网络问题,我在浏览器控制台中看到2个错误/异常:

a。)GET https://localhost:8443/sb-template/status-routes net :: ERR_CONNECTION_REFUSED {...}

然后是我的代码正在捕获的第二个:

b。)HttpErrorResponse {标题:HttpHeaders,状态:0,statusText:“未知错误”,网址:null,确定:false,…}

因此,我能够轻松捕获/捕获第二个错误HttpErrorResponse中的内容。但是无论如何,有捕获或捕获初始错误的方法吗……

这里的原因是第二个错误(HttpErrorResponse)中的消息,它是非常通用的并且显示很少:(未知url)的Http错误响应:0未知错误...这可能来自许多问题。 / p>

但是,如果我可以捕获/捕获初始错误...特别是net :: ERR_CONNECTION_REFUSED,这将提供有关可能的端口或远程服务关闭的更重要的信息。

2 个答案:

答案 0 :(得分:0)

可以使用chrome://network-errors/检查Chromium网络错误代码列表。控制台日志错误代码详细信息由chrome浏览器发出。您只需要处理HttpErrorResponse并根据状态代码设置错误消息。

状态代码为零可能是由于chrome adblocker或无效的身份验证/ cert详细信息或CORS问题导致的。如果您有权访问服务器api,则为响应标头设置以下属性,即使请求来自不同的来源,该属性也允许服务器接受请求。

Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE
Access-Control-Allow-Origin: *

[*]允许从任何地方进行跨源请求。可以将其限制为特定域或请求的来源。 request.getHeader(“ Origin”)

答案 1 :(得分:0)

状态代码0表示尚未发出请求,这通常是CORS OPTIONS调用失败,并且由于这是在javascript域之外处理的,因此详细信息不可用。由于您的错误是GET请求,因此我不确定这是否完全相同,但是对于选项angular没有更多详细信息。