是否可以将空格字符传递给cgi?

时间:2016-10-21 09:26:52

标签: http cgi lighttpd

我有一个编译的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)配置中遗漏了什么? 感谢

1 个答案:

答案 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程序设置的所有环境变量的列表。请务必将值视为不受信任的数据。