是否可以将 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 程序设置的所有环境变量的列表。请务必将这些值视为不受信任的数据。
我有一个带参数 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 程序设置的所有环境变量的列表。请务必将这些值视为不受信任的数据。