简单通用网关接口

简单通用网关接口(Simple Common Gateway Interface ，简称 SCGI) 是一种让应用程序与HTTP 服务器交互的协议，作为 CGI 协议的替代。它类似于FastCGI 但它被设计地更容易实现，且最重要的是，允许有很大延迟的CGI 操作（如联系外部数据库）。

规范

客户端通过一个可靠的流流协议连接到一个SCGI 服务器，进行 8 比特字节的传输。客户端首先发送请求，当 SCGI 服务器看到请求结束时，它会将回应发送回来并关闭连接。

请求格式

请求包含几个头部和正文。头部的格式是：

headers ::= header*
header ::= name NUL value NUL
name ::= notnull+
value ::= notnull*
notnull ::= <01> | <02> | <03> | … | <ff>
NUL = <00>
头部中不允许出现重复的名称。第一个头部的名称必须是"CONTENT_LENGTH" 且值为正文的十进制长度。 "CONTENT_LENGTH" 头必须始终存在，即使它的值为"0" 。此外还必须有一个头部的名称为"SCGI" 且值为"1"。为了方便从CGI 过渡，标准的CGI 环境变量也应该被作为SCGI 头部提供。
头部会被编码为netstring ，然后发送到服务器应用程序。正文将在头部后发送，它的长度由"CONTENT_LENGTH" 头部指定。

示例

网页服务器（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 服务器关闭连接。