• 协议



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


  • 相关阅读:
    centos7 安装jmeter5.1
    centos7 安装jdk1.8
    es6学习笔记(一)环境搭建
    Django-filter报错:__init__() got an unexpected keyword argument 'name'
    django fields lookup methods(lookup类型)
    django笔记-model
    Git-简单使用
    jenkins-master-slave节点配置总结
    Git-简单使用
    MySQL explain详解
  • 原文地址:https://www.cnblogs.com/zhco/p/9488754.html
Copyright © 2020-2023  润新知