简单通用网关接口 (Simple Common Gateway Interface ,简称 SCGI) 是一种让应用程序与 HTTP 服务器交互的协议,作为 CGI 协议的替代。它类似于 FastCGI 但它被设计地更容易实现,且最重要的是,允许有很大延迟的 CGI 操作(如联系外部数据库)。
规范客户端通过一个可靠的流流协议连接到一个 SCGI 服务器,进行 8 比特字节的传输。客户端首先发送请求,当 SCGI 服务器看到请求结束时,它会将回应发送回来并关闭连接。
请求格式请求包含几个头部和正文。头部的格式是:
headers ::= header*header ::= name NUL value NULname ::= notnull+value ::= notnull*notnull ::= | | | … | NUL =头部中不允许出现重复的名称。第一个头部的名称必须是 "CONTENT_LENGTH" 且值为正文的十进制长度。 "CONTENT_LENGTH" 头必须始终存在,即使它的值为 "0" 。此外还必须有一个头部的名称为 "SCGI" 且值为 "1"。为了方便从 CGI 过渡,标准的 CGI环境变量也应该被作为 SCGI 头部提供。
头部会被编码为netstring,然后发送到服务器应用程序。正文将在头部后发送,它的长度由 "CONTENT_LENGTH" 头部指定。1
示例网页服务器(SCGI 客户端)打开连接并发送以下字符串拼接起来的数据:
"70:" "CONTENT_LENGTH" "56" "SCGI" "1" "REQUEST_METHOD" "POST" "REQUEST_URI" "/deepthought" ",""What is the answer to life, the Universe and everything?"网页应用程序(SCGI 服务器)发送以下回应:
"Status: 200 OK" "Content-Type: text/plain" "" "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的实现标准
本词条内容贡献者为:
曹慧慧 - 副教授 - 中国矿业大学