Contents
  1. 1. WSGI-Environment是什么:
  2. 2. environ经典情况下包含的键值对:
  3. 3. WSGI要求下的变量:
  4. 4. WSGI-Environment的规范:

WSGI-Environment是什么:

WSGI-Environment,就是在代码中最常见的environ
environ字典被用来包含CGI(Common Gateway Interface,必须的网关接口)环境变量,除非是空字符串,否则所有以下将要介绍的变量都必须指定,但是在空字符串的情况下,他们会被忽略。除非特殊说明。
简而言之:environ是一个字典,包含请求中所有的环境变量


environ经典情况下包含的键值对:

Key Value Required Meaning Example
REQUEST_METHOD string HTTP的请求方式 “GET”
SCRIPT_NAME string URL请求中path的开始部分,对应了应用程序对象 “/api/v1”
PATH_INFO string URL请求中path的其余部分,指定应用程序内部的虚拟位置 “/login”
QUERY_STRING string 请求参数 “id=10086&page=1”
CONTENT_TYPE string HTTP请求中的Content-Type字段 “application/json”
CONTENT-LENGTH string HTTP请求中的Content-Length字段 “18868”
SERVER_NAME string 服务器名 “119.27.79.87”
SERVER_PORT string 服务器端口 “6666”
SERVER_PROTOCOL string HTTP协议版本 “HTTP/1.0”
HTTP_* 客户端提供的请求报头们,以”HTTP_”开头

WSGI要求下的变量:

Name Type Meaning
wsgi.version tuple 一般为(1,0),代表WSGI版本1.0
wsgi.url_scheme string URL的scheme部分,值为”http”或”https”
wsgi.input stream 一个能被HTTP请求主体读取的输入流
wgsi.errors stream 用于记录错误信息的输出流,目的是记录程序或者其他标准化及可能的中心化错误。对很对服务器而言,wsgi.errors是服务器的主要错误日志
wsgi.multithread bool 如果一个应用程序对象同时处于被同一个进程中的不同线程调用,则为True
wsgi.multiprocess bool 如果相同的应用程序对象同时被其他进程调用,则为True
wsgi.run_once bool 如果服务器/网关期待(但是不保证)应用程序在它所在的进程生命期间只会被调用一次,则为True

WSGI-Environment的规范:

  • 一个遵循WSGI规范的服务器或网关应该在文档中描述它们自己定义的同时,适当的说明一下它们可以提供哪些变量。而应用程序这边则应该对它们要用到的每一个变量的存在性进行检查,并且在检测某些变量不存在的时候要有备用措施
  • 除了CGI定义的变量,environ字典也可以包含任何操作系统相关的环境变量,并且并且必须包含第二部分提及的变量
  • environ字典可能会包含服务器定义的变量。这些变量应该用小写,数字,点号以及下划线来命名,并且必须定义一个该服务器/网关专有的前缀开头

Contents
  1. 1. WSGI-Environment是什么:
  2. 2. environ经典情况下包含的键值对:
  3. 3. WSGI要求下的变量:
  4. 4. WSGI-Environment的规范: