複製鏈接
請複製以下鏈接發送給好友

簡單通用網關接口

鎖定
簡單通用網關接口 (Simple Common Gateway Interface ,簡稱 SCGI) 是一種讓應用程序與 HTTP 服務器交互的協議,作為 CGI 協議的替代。它類似於 FastCGI 但它被設計地更容易實現,且最重要的是,允許有很大延遲的 CGI 操作(如聯繫外部數據庫)。
中文名
簡單通用網關接口
領    域
硬件

簡單通用網關接口規範

客户端通過一個可靠的流流協議連接到一個 SCGI 服務器,進行 8 比特字節的傳輸。客户端首先發送請求,當 SCGI 服務器看到請求結束時,它會將回應發送回來並關閉連接。

簡單通用網關接口請求格式

請求包含幾個頭部和正文。頭部的格式是:
headers ::= header*header ::= name NUL value NULname ::= notnull+value ::= notnull*notnull ::= <01> | <02> | <03> | … | <ff>NUL = <00>
頭部中不允許出現重複的名稱。第一個頭部的名稱必須是 "CONTENT_LENGTH" 且值為正文的十進制長度。 "CONTENT_LENGTH" 頭必須始終存在,即使它的值為 "0" 。此外還必須有一個頭部的名稱為 "SCGI" 且值為 "1"。為了方便從 CGI 過渡,標準的 CGI環境變量也應該被作為 SCGI 頭部提供。
頭部會被編碼為netstring,然後發送到服務器應用程序。正文將在頭部後發送,它的長度由 "CONTENT_LENGTH" 頭部指定。 [1] 

簡單通用網關接口示例

網頁服務器(SCGI 客户端)打開連接併發送以下字符串拼接起來的數據:
"70:"    "CONTENT_LENGTH" <00> "56" <00>    "SCGI" <00> "1" <00>    "REQUEST_METHOD" <00> "POST" <00>    "REQUEST_URI" <00> "/deepthought" <00>",""What is the answer to life, the Universe and everything?"
網頁應用程序(SCGI 服務器)發送以下回應:
"Status: 200 OK" <0d 0a>"Content-Type: text/plain" <0d 0a>"" <0d 0a>"42"
然後 SCGI 服務器關閉連接。 [2] 

簡單通用網關接口超文本傳輸協議

超文本傳輸協議(英文:HyperTextTransferProtocol,縮寫HTTP)是一種用於分佈式、協作式和超媒體信息系統的應用層協議。HTTP是萬維網的數據通信的基礎。
設計HTTP最初的目的是為了提供一種發佈和接收HTML頁面的方法。通過HTTP或者HTTPS協議請求的資源由統一資源標識符(Uniform Resource Identifiers,URI)來標識。
HTTP的發展是由蒂姆·伯納斯-李於1989年在歐洲核子研究組織(CERN)所發起。HTTP的標準制定由萬維網協會(World Wide Web Consortium,W3C)和互聯網工程任務組(Internet Engineering Task Force,IETF)進行協調,最終發佈了一系列的RFC,其中最著名的是1999年6月公佈的RFC 2616,定義了HTTP協議中現今廣泛使用的一個版本——HTTP 1.1。
2014年12月,互聯網工程任務組(IETF)的Hypertext Transfer Protocol Bis(httpbis)工作小組將HTTP/2標準提議遞交至IESG進行討論,於2015年2月17日被批准。HTTP/2標準於2015年5月以RFC 7540正式發表,取代HTTP 1.1成為HTTP的實現標準
參考資料
  • 1.    The specification document was placed in the public domain by Neil Schemenauer on 12 January 2006.
  • 2.    Apache JServ Protocol - A binary protocol intended to proxy requests between a webserver and an application server