scgi

SCGI(Simple Common Gateway Interface),簡單通用網關接口。是CGI的替代協定,與FastCGI相似,但更簡單。據測試SCGI實現的效率比CGI和FastCGI更高,也更穩定。

SCGI(Simple Common Gateway Interface),簡單通用網關接口。是CGI的替代協定,與FastCGI相似,但更簡單。據測試SCGI實現的效率比CGI和FastCGI更高,也更穩定。
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> | ... |
NUL = <00>
報頭中不允許重複命名。首個報頭必須名為"CONTENT_LENGTH",
且其值為非空的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?"
這是一個Netstring編碼的報頭+報體。開頭的70表示報文長度70個8位。<00>表示0結尾的字元串。用“,”隔開報頭和報體。
SCGI伺服器傳送下面的回響:
"Status: 200 OK" <0d 0A>
"Content-Type: text/plain" <0d 0a>
"" <0d 0a>
"42"
<0d 0a>表示換行。
SCGI伺服器關閉連線。

相關詞條

相關搜尋

熱門詞條

聯絡我們