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"
可以直接显示出收到请求的服务器的主机名称
。
网友评论