美文网首页
cgi文件返回HTTP状态码、设置Cookie、读取环境变量的记

cgi文件返回HTTP状态码、设置Cookie、读取环境变量的记

作者: 苍蝇的梦 | 来源:发表于2019-03-22 19:36 被阅读0次

    2019-03-22 遇到的一点小问题

    function loadXMLDoc(){
        var xmlhttp;
        if (window.XMLHttpRequest){
            xmlhttp=new XMLHttpRequest();
        }else{
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");// IE6, IE5 
        }
        xmlhttp.onreadystatechange=function(){
            if (xmlhttp.readyState==4 ){
                if(xmlhttp.status==200){
                    var jsonObj = window.JSON.parse(xmlhttp.responseText);//解析json文件
                    document.getElementById("show_message").innerHTML=jsonObj.wannoo.test[0];
                }else{
                    document.getElementById("show_message").innerHTML=xmlhttp.status;
                }
            }
        }
        xmlhttp.open("GET","./wannoo.cgi",true);
        xmlhttp.send();
    }
    

    最近在做机器的web管理界面,有一个功能需要cgi文件返回HTTP状态码。网上查了一下,发现只要在第一句写上echo "Status:404"就可以了。不过在HTTP请求时,虽然返回设置的状态码,但后面的代码还是有照样执行,也能正常显示JSON信息
    )。而且如果是直接打开cgi文件,浏览器也不会自动跳转错误界面。需要在浏览器的开发工具里才能看到。

    #!/bin/sh
    
    result=`cat ./wannoo.json`
    echo "Status:404"
    echo -e "Content-type: text/plain;charset=utf-8\n"
    echo "$result"
    

    然后上面的cgi文件写法还有一个问题,就是如果上面的shell出现错误,是没办法在html页面上显示错误信息的。只有shell命令正常执行的时候才会显示。这个要注意位置,把返回值写第一句。

    #!/bin/sh
    
    echo "Status:404"
    #cgi文件设置Cookie的方法
    echo "Set-Cookie: name=wannoo"
    echo -e "Content-type: text/plain;charset=utf-8\n"
    result=`cat ./wannoo.json`
    echo "$result"
    

    当然了,如果不方便放第一句,也是有方法的。就是使用Linux的标准输出。这样也就能显示错误信息了。

    result=`cat ./wannoo.json 2>&1`
    
    执行正常 执行出现错误 执行出现错误但没有显示出来
    然后今天查资料发现cgi有些环境变量,可以很方便地获取一些信息。比如echo "$SERVER_NAME"可以直接显示出收到请求的服务器的主机名称

    相关文章

      网友评论

          本文标题:cgi文件返回HTTP状态码、设置Cookie、读取环境变量的记

          本文链接:https://www.haomeiwen.com/subject/zfwumqtx.html