当前位置: 首页 > Web前端 > HTML

Httpfailureresponse0Unknownerror错误分析

时间:2023-04-03 01:11:27 HTML

在Angular应用中使用如下代码进行HTTP访问:this.httpClient.get(url).subscribe(response=>{//dosomethingwithresponse},err=>{console.log(err.message);},()=>{console.log('completed');}问题是当请求失败时,我看到(unknownurl):0UnknownErrormessageintheconsoleGenericHttp的失败响应。同时,当我在chrome中检查失败的请求时,我可以看到响应状态为422,并且在预览选项卡中,我看到了描述失败原因的实际消息。如何访问我可以在在chrome开发工具中看到的实际响应消息?这是一个演示问题的屏幕截图:[图片]一个可能的原因是请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,来自的应用程序Origin'http://localhost:4200'访问资源。这意味着来自后端服务器的响应缺少Access-Control-Allow-Origin标头,即使后端nginx配置为使用add_header指令传递这些标头标头被添加到响应中。但是,此指令仅在响应代码为20X或30X时才添加标头。在错误响应中,标头丢失。我需要使用always参数来确保无论响应代码如何都添加标头:add_header'Access-Control-Allow-Origin''http://localhost:4200'always;正确配置后端后,我可以访问Angular代码中的实际错误消息。除了CORS错误之外的另一个可能的错误:我的问题是因为我使用的是Android平台级别28,默认情况下禁用明文网络通信,并且我正在尝试开发一个指向我笔记本电脑IP的应用程序(运行API服务器).API基本URL类似于http://[LAPTOP_IP]:8081。由于它不是https,因此androidwebview完全阻止了电话/模拟器和我笔记本电脑上的服务器之间的网络流量。解决这个问题,修改如下配置文件:resources/android/xml/network_security_config.xml...<资源文件src="resources/android/xml/network_security_config.xml"target="app/src/main/res/xml/network_security_config.xml"/>....