我对这一切都不熟悉,所以告诉我,如果我做错了什么。
我正在用我的覆盆子pi做一些gpio的东西,目前我正在制作一些东西,所以可以通过网络界面控制gpio引脚。我这样做的一种方法是使用bash CGI脚本来控制引脚,并从浏览器执行它们。
到目前为止,我能让这个工作的唯一方法是浏览器加载页面“.../cgi-bin/gpio1.cgi
”等,其中包含代码:
#!/bin/bash
echo "Content-type: text/html"
echo ""
...gpio stuff...
这样可行,但浏览器会导航到此脚本创建的空白页面。
有没有办法在不离开网页的情况下执行这些脚本,因此脚本不是在编写HTML而是专注于实际的gpio内容?
由于
答案 0 :(得分:1)
试试这个:
#!/bin/bash
echo "Status: 204 No Content"
...gpio stuff...
HTTP响应必须以状态行开头;如果CGI没有指定,则web服务器通常会添加状态“200 Ok”。该状态必须伴随响应机构,这将形成新的网页。
您想要的状态是204
,表示请求已满足,但没有响应,浏览器应保留在同一页面上。通常,这是对POST
请求的响应,而不是GET
请求,但无论如何都应该有效。由于204
响应不需要响应主体(事实上,它不允许响应主体),因此不必在状态行后输出空行,但如果脚本需要,则可能需要一个空行很长一段时间。