openwrt C cgi脚本

openwrt C cgi script

我们正在开发openwrt。 Web 服务器使用 lighttpd。 cgi是用C语言开发的。 在html表单中,在form标签中设置action为cgi,执行C开发的cgi。 我把脚本放在cgi里了。

int main(int argc, char *argv[]){
char *form, *inStr;
long inLen;

printf("Content-type: text/html%c%c\n\n",10,10);
printf("<HTML>\n");
printf("<head>\n");
inLen = strtol(getenv("CONTENT_LENGTH"), NULL, 10) + 1;
inStr = malloc(inLen);
memset(inStr, 0, inLen);
fgets(inStr, inLen+1, stdin);
form = web_get("page", inStr, 0);
 if (!strcmp(form, "reboot")) {
    set_reboot(inStr);




 printf("scriptype='text/javascript'>document.location.href='../index.shtml';/script>\n"); 
   }else if (!strcmp(form,"lan"))
         {
    set_lan(inStr);
   }
   free(inStr);
printf("</head>\n");
printf("</HTML>");
return 0;

}

在Chrome中运行ning cgi后,脚本不会运行。 这是我在网页上看到的。 net.bridge.bridge-nf-call-custom = 0 错误 运行ning 命令 好的 好的 好的 内容类型:text/plain;字符集=utf-8

<HTML>
<head>
<script 
type='text/javascript'>document.location.href='../wireless_setting.shtml'; 
</script>
</head>
</HTML>

我没有转到我想要的页面。

因为你执行了这行:

printf("Content-type: text/html%c%c\n\n",10,10);

上一行之后的任何内容都不会执行,而是打印在屏幕上。问题出在这个脚本的流程中。只有在完成所有其他操作后,您才必须开始打印页面。