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

Is it possible to pass a space character to a cgi?

我有一个带参数 HIGH/LOW/OFF 的已编译的 C 二进制文件 (setch),所以我试图从 javascript/jquery 执行命令,例如 setch OFF 因此:

$.get("cgi-bin/setch.cgi","OFF"); -or  
$.get("cgi-bin/setch OFF");  

因为它是一个 get,所以 space 当然被编码成 %20。然而,服务器然后尝试执行命令 setch%20OFF 和 returns:

404 Not Found

程序在没有参数的情况下执行,returns 我的消息:

no parameters

即所有路径、权限等都可以

我是不是在尝试做不可能的事情?或者我在服务器(lighttpd)配置中遗漏了什么? 谢谢

您想将参数传递给 CGI。这样做的方法不是用 space 分隔它们,而是将参数放在 "?" 后面。特点。然后,HTTP 服务器会将问号后面的所有内容存储在 QUERY_STRING 环境变量中,您的 CGI 然后可以读取这些内容。

$.get("cgi-bin/setch?OFF");

在您的 C 程序中使用 getenv("QUERY_STRING") 访问传递的参数。

检查 https://en.wikipedia.org/wiki/Common_Gateway_Interface 以获得 HTTP 服务器为 CGI 程序设置的所有环境变量的列表。请务必将这些值视为不受信任的数据。