Егоров, Константин Николаевич
- 1 year ago
- 0
- 0
Simple Common Gateway Interface ( SCGI ) — протокол по взаимодействию приложений с веб (http) серверами, разработанный как альтернатива Common Gateway Interface . Он похож на FastCGI , но проще в реализации.
Спецификация была опубликована Neil Schemenauer <[email protected]> 12 января 2006 года .
Клиент подключается к SCGI-серверу по протоколу передачи потоков, допускающем передачу 8-битных байтов. Клиент начинает с отправки запроса. Когда SCGI-сервер видит конец запроса, он посылает обратно ответ и закрывает соединение. Формат ответа не специфицирован протоколом.
Запрос состоит из заголовков и тела. Формат заголовков:
headers ::= header* header ::= name NUL value NUL name ::= notnull+ value ::= notnull+ notnull ::= <01> | <02> | <03> | ... | <ff> NUL = <00>
Повторяющиеся имена не допускаются. Первый заголовок обязан иметь имя «CONTENT_LENGTH», а в его теле — непустой последовательности ASCII цифр — должна быть указана длина тела сообщения (в десятичном представлении). Заголовок «CONTENT_LENGTH» всегда должен передаваться, даже если его значение 0. Также всегда должен передаваться заголовок «SCGI» и значением 1. Для облегчения перехода с CGI, переменные окружения CGI должны передаваться как заголовки SCGI.
Заголовки пересылаются закодированные как сетевые строки ( англ. netstrings ). Тело пересылается за заголовками и его длина должна определяться заголовком «CONTENT_LENGTH».
Веб-сервер (клиент 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?"
SCGI сервер посылает следующий ответ:
"Status: 200 OK" <0d 0a> "Content-Type: text/plain" <0d 0a> "" <0d 0a> "42"
Затем сервер SCGI закрывает соединение.