炎术士挂机:用Bash 开发Web2.0
来源:百度文库 编辑:中财网 时间:2024/05/04 04:12:13
用Bash 开发Web2.02009-09-15 21:44非主流一把~~~ 用Bash 开发Web2.0
一般比较喜欢用C语言或者perl 语言来开发CGI程序, 今天非主流一把, 用Bash写CGI.. 但是php cgi 的性能远远低于mod_php, perl cgi的速度也低于 mod_perl , CGI慢慢远离了人们的视野,程序员们用Fastcgi/mod_perl/mod_php 取代了效率很低的CGI(一个连接就是一个进程). CGI也存在很多的安全问题, 编程的时候一定要小心用户的输入过滤,和ENV PATH的限制,很容易被黑客获取web server的权限.
Bash 于 perl CGI 编程对比:
HTTP Head 结尾: 没有区别, 在Head中: Content-type: text/html\n\n
HTTP Cookie: 没有区别, 在Head中: Set-Cookie : name=value\n
HTTP GET : 理论上都一样,保存在head中
bash: $QUERY_STRING
Perl: $ENV{'QUERY_STRING'}
HTTP POST: 理论是一样的,POST内容放在STDIN中
bash : str=`cat`
perl : read(STDIN,$POST,$ENV{'CONTENT_LENGTH'})
GET/POST: 需要写urlencode/urldecode方法,很简单 就是ASCII转为16进制 在加上'%'符号就可以了
Session:
perl: 需要自己实现,或者使用use CGI::Session
bash: 需要自己实现, 原理很简单,可以使用http1.1中对Session的实现的描述:
每一连接生成一个随机ID, 保持这个ID在一段时间之内有效,将这个ID存储在Cookies中(如果客户端不支持Cookies,则使用url重定向技术), 然后这个ID就好像一把钥匙,每一个ID在服务器上对应一个'柜子' 来存储Session,我们可以用简单的文件系统来实现.然后用户每次访问的时候携带自己的SessionID, 在服务器上和自己对应的‘柜子’中获得Session.
好了,我们已经掌握 HTTP 的head,get,post,cookie,session 的实现方法了, 可以用Bash开发Web应用了~甚至一可以用Bash写强大Web2.0程序, 但是效率很低的~~~
一个测试程序(先在apache中配置好cgi环境)
web.sh
========================================
#!/bin/bash
printf "Content-type: text/html\n"
printf "Set-Cookie:name=wangyong\n\n"
printf "Helloworld
\n"
printf "GET : $QUERY_STRING\n"
printf "
"
printf "POST: `cat`
"
echo ""
echo ""
printf "
"
printf "ENV: `env`"
我的Web应用程序道路~返朴归真了: J2EE-->PHP-->PERL CGI-->C CGI-->Bash CGI--> ???
一般比较喜欢用C语言或者perl 语言来开发CGI程序, 今天非主流一把, 用Bash写CGI.. 但是php cgi 的性能远远低于mod_php, perl cgi的速度也低于 mod_perl , CGI慢慢远离了人们的视野,程序员们用Fastcgi/mod_perl/mod_php 取代了效率很低的CGI(一个连接就是一个进程). CGI也存在很多的安全问题, 编程的时候一定要小心用户的输入过滤,和ENV PATH的限制,很容易被黑客获取web server的权限.
Bash 于 perl CGI 编程对比:
HTTP Head 结尾: 没有区别, 在Head中: Content-type: text/html\n\n
HTTP Cookie: 没有区别, 在Head中: Set-Cookie : name=value\n
HTTP GET : 理论上都一样,保存在head中
bash: $QUERY_STRING
Perl: $ENV{'QUERY_STRING'}
HTTP POST: 理论是一样的,POST内容放在STDIN中
bash : str=`cat`
perl : read(STDIN,$POST,$ENV{'CONTENT_LENGTH'})
GET/POST: 需要写urlencode/urldecode方法,很简单 就是ASCII转为16进制 在加上'%'符号就可以了
Session:
perl: 需要自己实现,或者使用use CGI::Session
bash: 需要自己实现, 原理很简单,可以使用http1.1中对Session的实现的描述:
每一连接生成一个随机ID, 保持这个ID在一段时间之内有效,将这个ID存储在Cookies中(如果客户端不支持Cookies,则使用url重定向技术), 然后这个ID就好像一把钥匙,每一个ID在服务器上对应一个'柜子' 来存储Session,我们可以用简单的文件系统来实现.然后用户每次访问的时候携带自己的SessionID, 在服务器上和自己对应的‘柜子’中获得Session.
好了,我们已经掌握 HTTP 的head,get,post,cookie,session 的实现方法了, 可以用Bash开发Web应用了~甚至一可以用Bash写强大Web2.0程序, 但是效率很低的~~~
一个测试程序(先在apache中配置好cgi环境)
web.sh
========================================
#!/bin/bash
printf "Content-type: text/html\n"
printf "Set-Cookie:name=wangyong\n\n"
printf "Helloworld
\n"
printf "GET : $QUERY_STRING\n"
printf "
"
printf "POST: `cat`
"
echo ""
echo ""
printf "
"
printf "ENV: `env`"
我的Web应用程序道路~返朴归真了: J2EE-->PHP-->PERL CGI-->C CGI-->Bash CGI--> ???
web2.0用什么软件开发的
请问开发WEB2.0的网站,用什么开发工具好一点?
征服ajax-web2.0开发技术详解电子版
web2.0?????????????????????????????
web2.0用刀什么技术?
为什么都喜欢用Web2.0
什么是web2.0
什么是web2.0
什么是WEB2.0?
web2.0是什么?
什么是WEB2.0?
什么是Web2.0?
什么是WEB2.0?
WEB2.0是什么东东?
web2.0是什么?
什么WEB2.0
什么是WEB2.0?
web2.0怎么参与
什么是web2.0
什么叫web2.0?
什么是WEB2.0
什么是“web2.0”?
什么是WEB2.0
什么是WEB2.0