我有一个编译的c二进制文件(setch),它接受参数HIGH/LOW/OFF
所以我试图从javascript / jquery执行命令,例如setch OFF
,因此:
$.get("cgi-bin/setch.cgi","OFF"); -or
$.get("cgi-bin/setch OFF");
因为它是一个获得,然后空间被编码为%20,当然。但是,服务器然后尝试执行命令setch%20OFF
并返回:
404 Not Found
没有参数程序执行并返回我的消息:
没有参数
即所有路径,权限等都可以
我想在这里做不可能的事吗?或者我在服务器(lighttpd)配置中遗漏了什么? 感谢
答案 0 :(得分:0)
您想将参数传递给CGI。这样做的方法不是将它们与空格分开,而是要将参数放在"?"字符。然后,HTTP服务器将在CGERY可以读取的QUERY_STRING环境变量中存储问号后面的所有内容。
即
$.get("cgi-bin/setch?OFF");
在您的C程序中,使用getenv("QUERY_STRING")
来访问传递的参数。
检查https://en.wikipedia.org/wiki/Common_Gateway_Interface以获取HTTP服务器为CGI程序设置的所有环境变量的列表。请务必将值视为不受信任的数据。