【发布时间】:2021-02-21 17:20:40
【问题描述】:
我想通过获取某种响应或 hack 来 ping IP 地址以获取响应,无论它是否存在。
ping() {
return this.http.get('http://192.168.2.101')
}
this.deviceService.ping().subscribe(result => {
console.log(result)
})
但我收到此错误。
【问题讨论】:
-
使用服务器为您 ping 并以角度使用它的响应
-
我正在构建的这个应用程序只是一个没有服务器端的 Angular 应用程序。角度不可能吗?
-
您的 Angular 应用程序可以通过两种协议工作:HTTP 和 WebSocket。 Ping 通过浏览器不支持的 ICMP 协议工作。作为一个选项,您的 Angular 应用程序可能会询问服务器端发送 ping 并将结果返回给 Angular。
-
这是一个跨域问题。对于本地开发,您可以使用 Allow CROS 插件。
-
看到您的问题是您正在从浏览器 ping 并且大多数现代浏览器会阻止跨源请求,除非服务器或您的设备允许。我没有使用 Allow CROS Plugin 但我怀疑即使使用它也能正常工作。这更像是一个浏览器阻塞的问题。如果您可以选择更改路由器软件以允许使用 COR 标头,那就太好了。否则,您必须将请求发送到您的应用服务器,然后向路由器发出请求以满足特定需求。如果处理无法添加 CORS 标头的用例,这是正确的方法。