什么是SCGI
来源:互联网 发布:批处理静默安装软件 编辑:程序博客网 时间:2024/05/24 05:03
周海汉/文 2008.12.29
http://blog.csdn.net/ablo_zhou
SCGI和CGI一样,分为客户端和服务器端。客户端放在http服务器侧。如apache有mod_scgi,lighthttpd有内置的SCGI支持。目前(2008.12.29)最新版本 scgi 1.13, 服务器实现是python,但放在http服务器侧的客户端实现是C语言。
标准原版:http://python.ca/scgi/protocol.txt
协议中,ASCII字符可以用< >括起来的16进制数字表示,也可以引号""括起来的ASCII表示。
报文由报头和报体组成。报头格式:
headers ::= header* header ::= name NUL value NUL name ::= notnull+ value ::= notnull* notnull ::= <01> | <02> | <03> | ... | <ff> NUL = <00>
报头中不允许重复命名。首个报头必须名为"CONTENT_LENGTH",
且其值为非空的ASCII数字序列,以十进制数形式给出了报文主体的长度。
"CONTENT_LENGTH"报头必须总是存在,即使其值为"0"。
同时必须始终有名为"SCGI"且值为"1"的报头。
为了便于从CGI的迁移,标准CGI环境变量应该作为SCGI报头提供。
且其值为非空的ASCII数字序列,以十进制数形式给出了报文主体的长度。
"CONTENT_LENGTH"报头必须总是存在,即使其值为"0"。
同时必须始终有名为"SCGI"且值为"1"的报头。
为了便于从CGI的迁移,标准CGI环境变量应该作为SCGI报头提供。
报头采用Netstring编码。格式为“整个报文长度字符串:报头,报体”
如下的示例:
web服务器(一个SCGI客户端)打开一个连接,发送下面字符串的拼接:
"70:"
"CONTENT_LENGTH" <00> "27" <00>
"SCGI" <00> "1" <00>
"REQUEST_METHOD" <00> "POST" <00>
"REQUEST_URI" <00> "/deepthought" <00>
","
"What is the answer to life?"
"70:"
"CONTENT_LENGTH" <00> "27" <00>
"SCGI" <00> "1" <00>
"REQUEST_METHOD" <00> "POST" <00>
"REQUEST_URI" <00> "/deepthought" <00>
","
"What is the answer to life?"
这是一个Netstring编码的报头+报体。开头的70表示报文长度70个8位。<00>表示0结尾的字符串。用“,”隔开报头和报体。
SCGI服务器发送下面的响应:
"Status: 200 OK" <0d 0a>
"Content-Type: text/plain" <0d 0a>
"" <0d 0a>
"42"
<0d 0a>表示换行。
SCGI服务器关闭连接。
"Status: 200 OK" <0d 0a>
"Content-Type: text/plain" <0d 0a>
"" <0d 0a>
"42"
<0d 0a>表示换行。
SCGI服务器关闭连接。
参考:
http://python.ca/scgi/protocol.txt
中文翻译:http://blog.chinaunix.net/u1/57558/showart_1270846.html
http://python.ca/scgi/
- 什么是SCGI
- 什么是SCGI
- SCGI
- Turbogears+SCGI
- Django+SCGI
- scgi的分布式部署
- fcgi,scgi,wsgi,cgi
- CGI, FCGI, SCGI, WSGI 释异
- CGI,FastCGI,SCGI,WSGI 差别
- CGI, FCGI, SCGI, WSGI 释异
- ROR with Lighttpd+SCGI on Windows(转)
- lighttpd下pylons的scgi发布
- CentOS5.2下安装Lighttpd+Quixote+SCGi
- scgi和quixote的结合使用
- Debian下quixote和scgi的默认安装路径
- scgi和fastcgi在IIS跑django下的性能
- 什么是
- 十三.支持设置proxy、memcached、fastcgi、scgi、uwsgi在后端失败时的重试次数
- (转)XML四种解析器(DOM,SAX,JDOM,DOM4J)原理及性能比较
- [转]用C++ 设计一个不能被继承的类
- 困惑的新建文档
- matlab编程建议(转)
- 解决 IntelliJ 8.0.1 的输入法冲突问题
- 什么是SCGI
- 命里有时终需有&命里无时莫强求
- 期刊文章标题太长出错
- 隔行扫描之消除锯齿(1)
- Python语言技巧之三元运算符
- 开发工程师的人生之路
- 岁末了.
- JVM内存的设置的原理
- 单元测试的基本方法