【发布时间】:2017-08-10 12:45:06
【问题描述】:
我有一个 Raspberry pi 3. 并安装了 Web 服务器。我有一个监听端口 432 的文件 http1.py 和从 URL 传递的变量“a”,它将通过 GPIO 打开和关闭灯:“http://192.168.0.5:432/turn?a=1” 我还在我的路由器上打开了 80 端口下的 ip 转发,它可以工作。 在我的树莓派服务器上,我有 index.html 文件,它使用 Ajax 访问 http://192.168.0.5:432/turn?a=1:
function ras(str) {
var url = "HTTP://192.168.0.17:432/turn?a="+str;
xmlHttp = GetXmlHttpObject(stateChanged);
xmlHttp.open("GET", url, true);
xmlHttp.send(null); .....
}
function stateChanged() {
if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
Blah, blah ...
现在,在网络中,它工作正常(打开和关闭 GPIO),但使用外部 ipaddress 75.129.-.-:80,我看到 index.html 但是当我访问激活 Ajax 的链接时,什么都没有发生。
我做错了什么?或者,有没有更好的方法从我的网络中访问 GPIO?
【问题讨论】:
-
你的python脚本在哪里?
-
它在 /var/www/html 下。与 index.html 相同的目录,当我从该位置运行命令 http1.py 时,它工作正常
-
您的 javascript 代码在您的浏览器中运行。它无法访问服务的本地网络,除非您的浏览器本身在服务器的本地网络上。
-
是的,这是有道理的。有没有关于如何从网络外部访问树莓派的建议?
-
我可以用外部 IP 地址编辑 Ajax:var url = "HTTP://75.129.-.-:432/turn?a="+str; ??
标签: python ajax raspberry-pi