我在Raspberry Pi上创建了一个Web应用程序,这个只需要对网关做一些HTTP请求(网关和Raspberry Pi在同一个网络上)。 HTTP请求在Angular中进行,如下所示:
@Bean
public boolean isRunningTests() {
return false;
}
现在这里出现了问题,我希望得到一个回复或者来自CORS的错误,而是我收到一个错误,告诉我请求因超时而终止。
这是不可能的,因为请求URL绝对正确。如何解决这个问题?
P.S。:一个可能有用的信息:网关和Raspberry Pi都在我的家庭网络中,但我从我的办公室网络连接我的PC到Raspberry。
答案 0 :(得分:0)
发生此错误是因为您的AngularJS代码在浏览器上执行(在客户端)。因此,请求的服务器(192.168.3.9)将根据您的浏览器所在地进行解析。
如果您在家,它可能会正常工作,因为地址已在本地解析(因此它将到达您的网关),但如果您在办公室,192.168.3.9将无法解析到您的网关,但在您当地办事处网络上的设备。
答案 1 :(得分:0)
这里的问题是您在客户端的浏览器中运行了$http.get
。
因此,您有两个不同的问题 - 您需要能够解析您的IP地址/ URL,并且您需要端口号才能到达主机。
192.168 ...地址是一个局域网IP,所以只有你的家庭网络才有意义。在修复IP / URL问题后,我们需要通过您的网关访问您的RPi端口8081。
您还没有真正完整的基础架构 - 如果您的RPi是您的整个服务器端基础架构(即没有单独的网络服务器),那么您需要为您的家庭提供静态WAN IP网络,或配置使用动态IP更新的主机名(请参阅ddclient或类似内容)。
如果您确实有一个单独的网络服务器,但您可以考虑让主网站中的控制器将这些请求退回到RPi。它会增加一些开销,但具有各种配置优势 - 消除CORS,你不需要你的RPi暴露到网络等等。