SCGI(簡單通用網關接口)

1.介紹

SCGI協定是一個CGI(通用網關接口)協定的替代品· 它是一個套用與HTTP伺服器的接口標準,類似於FastCGI,但是它設計得更為容易實現·

本文中, 8比特位元組的字元串可能寫成兩種不同的形式: 在兩個尖括弧中間的十六進制數字序列, 或者是在兩個雙引號之間的 ACSII字元 序列· 例如,

< 68 65 6c 6c 6f 20 77 6f 72 6c 64 21 >

是一個長度為12的字元串, 等同於 字元串 “hello,world!”

注意: 這兩種記號只是用在文檔中, 並不是協定的一部分

基本介紹

  • 中文名:SCGI(簡單通用網關接口)
  • 外文名:SCGI
  • 性質:CGI協定的替代品
  • 套用:與HTTP伺服器的接口標準
  • 類似於:FastCGI
協定,請求格式,網路字元,例子,著作權,

協定

客戶端通過一個可傳輸8比特位元組的可靠的流協定(a reliable stream protocol)連線到一個SCGI伺服器. 客戶端以傳送一個請求來開始. 請求的格式參看第3節. 當SCGI伺服器看到請求的結束時, 他發回一個回響,然後關閉連線. 回響的格式不在此協定里規定.

請求格式

一個請求含有一定數目的頭和體. 頭的格式是:
headers ::= header*
headers ::= name NUL value NUL
name ::= notnull+
value ::= notnull*
notnull ::= <01> | <02> | <03> | ... | <ff>
NUL = <00>
在請求頭中,是不允許有重複的名字的. 第1個頭的名字必須是”CONTENT_LENGTH”,它的值是,一個非空的ASCII數字序列,以10進制來表示 請求體的長度. “CONTENT_LENGTH” 必須總是存在的,即使它的值為0
並且還必須總有一個叫”SCGI”的頭,它的值為”1″. 為了促進從CGI的轉換, 標準的CGI環境變數也應該作為
SCGI頭提供.
請求頭以網路字元串(netstring)編碼後傳送. 網路字元串編碼在第4節中解釋. 請求體在請求頭之後傳送,它的長度有 請求體的”CONTENT_LENGTH” 頭的值指定.

網路字元

任何8比特位元組的串, 都可以以 [len]“:”[string]“,” 的格式編碼. 這裡, [string] 是一個字元串, [len]是
[string]的長度,以十進制表示 為ASCII形式的數字. ASCII數字是 <30> 表示 0, <31>表示1, 以此類推,<39>表示 9. 在[len]前面不能有額外的0: <30>開始的[len] 表示 [string]是空的
舉個例子:
字元串”hello world!” 編碼為
<31 32 3a 68 65 6c 6c 6f 20 77 6f 72 6c 64 21 2c>
也就是
“12:hello world!,”
空的字元串編碼為 “0:,”
[len]“:”[string]“,” 這個格式 就叫做網路字元串(netstring). [string] 叫做netstring的 表示方式(interpretation)

例子

web伺服器(a 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?"
SCGI伺服器發回下面的回響
"Status: 200 OK" <0d 0a>
"Content-Type: text/plain" <0d 0a>
"" <0d 0a>
"42"
然後, SCGI伺服器關閉這個連線

著作權

本文檔已放在公共域
譯後
這個SCGI確實比FASTCGI和CGI都要簡單
FASTCGI的創新就是 CGI服務不用不停地啟動和停止
SCGI將 傳輸協定簡化了太多

相關詞條

熱門詞條

聯絡我們