c语言处理通过ajax发起http的post请求CGI并向浏览器返会值

摘要:
strcmp(requestmethod,“GET”){input=getenv(“QUERY_STRING”);returninput;}elseif(!strcmp(requestmethod,“POST”)){len=atoi(getenv(“CONTENT_LENGTH”));input=(char*)malloc(sizeof(char)*(size+1));if(len==0){input[0]='

环境:centos 6.5

web容器:apache2.4,[<http://httpd.apache.org/docs/2.4/]

准备:

cd /usr/local/httpd-2.4.20/modules/generators  enter

  cp mod_cgi.c /usr/local/apache/bin enter

  ./apxs -i -a -c mod_cgi.c enter

  cd usr/local/apache/conf/

  vim httpd.conf (找到loadModule xxxx  xxxx 的地方,在后面添加 loadModule cdg_module modules/mod_cgi.so) 

  cd ../bin enter

  ./httpd -k restart

在/usr/local/apache/htdocs/添加 index.html

<html>
<head>
    <script type="text/javascript" src="js/jquery.min.js"></script>
</head>
    <body>
        <h1>It works!hahahahhahaha~</h1>
        <input type="button" onclick="testcgi()" value="test"/>
    </body>
     <script type = "text/javaScript">
        function testcgi(){
        $.ajax({
                type: 'POST',
                url: '../cgi-bin/cgitest.cgi', 
                data:"hello world",
                dataType: "text", 
                ContentType: "application/text; charset=utf-8",
                success: function (returnedData,status) {
                    if(status=="success"){
                        alert(returnedData);
                    }
                },
                error: function (msg) {
                    alert("访问失败:"+ msg);
                }
            });
}
    </script>
</html>

在/usr/local/apache/cgi-bin添加 cgitest.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

#define MAXLEN 1024

char* getcgidata(FILE* fp, char* requestmethod);

int main(void)
{
    char * cgistr = NULL;
    char * req_method = NULL;
    printf( "Content-type: application/text;charset=utf-8

" );
    req_method = getenv("REQUEST_METHOD");
    cgistr = getcgidata(stdin, req_method);
    fprintf(stdout,"you post param is %s",cgistr);
}

char* getcgidata(FILE* fp, char* requestmethod)
{
    char* input;
    int len;
    int size = MAXLEN;
    int i = 0;

    if (!strcmp(requestmethod, "GET"))
    {
        input = getenv("QUERY_STRING");
        return input;
    }
    else if (!strcmp(requestmethod, "POST"))
    {
        len = atoi(getenv("CONTENT_LENGTH"));
        input = (char*)malloc(sizeof(char)*(size + 1));

        if (len == 0)
        {
            input[0] = '

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇for的使用及输出乘法表React-使用总结下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ASP.NET Web API(一):使用初探,GET和POST数据

概述 REST(Representational State Transfer表述性状态转移)而产生的REST API的讨论越来越多,微软在ASP.NET中也添加了Web API的功能。 我们看dudu的文章HttpClient + ASP.NET Web API, WCF之外的另一个选择知道了博客园也开始使用了Web API,且在使用Web API B...

XSS的高级利用部分总结 -蠕虫

XSS的高级利用部分总结 -蠕虫,HTTP-only,AJAX本地文件操作,镜象网页本帖最后由 racle 于 2009-5-30 09:19 编辑 XSS的高级利用总结 -蠕虫,HTTPONLY,AJAX本地文件操作,镜象网页By racle@tian6.com http://bbs.tian6.com/thread-12711-1-1.html转帖请保...

Elasticsearch搜索引擎学习笔记(五)

搜索功能 数据准备   1、自定义词库     慕课网     慕课     课网     慕     课     网   2、新建立索引shop   3、建立mappings POST /shop/_mapping (7.x之前的版本:/shop/_mapping/_doc) { "properties": {...

postman的基本用法,请求,断言,环境变量

postman基本用法 Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。 它提供功能强大的 Web API & HTTP 请求调试。 它能够发送任何类型的HTTP 请求 (GET,HEAD, POST, PUT..), 附带任何数量的参数+ headers。   Postman功能:   主要用于模拟网络请求包  ...

08 在设备树里描述platform_device【转】

转自:https://blog.csdn.net/jklinux/article/details/78575281 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/jklinux/article/details/78575281在设备树的dts文件...

Vs2005中使用Ajax(二)【转】

原帖地址:http://www.blogjava.net/Microhelp/articles/147114.html 1. 这里要做的是一个省市区三级联动的下拉列表框,效果如下图。在前面的项目中,新建页面AjaxForm2.aspx,添加三个DropdownList,添加一个textbox和一个button <table>          ...