欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
CGI技術(shù)及其開(kāi)發(fā)
 CGI技術(shù)及其開(kāi)發(fā)
作為Internet上最主要的信息管理和組織手段,WWW由一系列相應的技術(shù)及應用構
成,其組成技術(shù)包括HTTP、HTML、URL以及CGI等。WWW服務(wù)器本身提供一些基本功
能,以完成客戶(hù)端的請求和自身的管理。但不同的用戶(hù)有不同的功能要求,其中許
多功能是WWW服務(wù)器本身 不能提供的(比如在線(xiàn)查詢(xún)等),它必須提供一種擴展手
段,以允許用戶(hù)編寫(xiě)擴展應用程序來(lái)擴展服務(wù)器的功能。CGI(CommonGatewayInterface,
即通用網(wǎng)關(guān)接口)就是這樣的一種標準擴展技術(shù)。下面就CGI的基本技術(shù)及其開(kāi)發(fā)
進(jìn)行討論。

一、CGI技術(shù)
1.1CGI的提出
CGI是外部擴展應用程序與WWW服務(wù)器交互的一個(gè)標準接口。按照CGI標準編寫(xiě)的外
部擴展應用程序可以處理客戶(hù)端(一般是WWW瀏覽器)輸入的協(xié)同工作數據,完成
客戶(hù)端與服務(wù)器的交互操作。這在實(shí)際應用中非常有用,如可以編寫(xiě)CGI外部擴展
程序來(lái)訪(fǎng)問(wèn)外部數據庫,客戶(hù)端用戶(hù)可以通過(guò)它和WWW服務(wù)器來(lái)進(jìn)行數據查詢(xún)。CGI
一般分兩種:標準CGI和緩沖CGI。所有的WWW服務(wù)器均應支持標準CGI,按標準CGI
編寫(xiě)的程序與具體的WWW服務(wù)器無(wú)關(guān)。而按緩沖CGI編寫(xiě)的程序與WWW服務(wù)器有關(guān)。
1.2CGI的工作原理
1.標準CGI
客戶(hù)端、服務(wù)器、CGI接口與外部程序間的關(guān)系可用圖1-1表示:如上圖所示,服
務(wù)器是客戶(hù)端(如瀏覽器)與擴展程序之間的通道。當客戶(hù)端的用戶(hù)完成了一定
輸入工作(比如填充完HTML文檔中的FORM表)之后向服務(wù)器發(fā)出HTTP請求(稱(chēng)為CGI
請求),服務(wù)器守護進(jìn)程接收到該請求后,就創(chuàng )建一個(gè)子進(jìn)程(稱(chēng)為CGI進(jìn)程)。
該CGI子進(jìn)程將CGI請求的有關(guān)數據設置成環(huán)境變量,在外部CGI程序與服務(wù)器間建
立兩條數據通道(標準I/O),然后啟動(dòng)URL指定的CGI程序,并與該子進(jìn)程保持同
步,以監測CGI程序的執行狀態(tài)。子進(jìn)程通過(guò)標準輸出流將處理結果傳遞給服務(wù)器
守護進(jìn)程,守護進(jìn)程再將處理結果作為應答消息回送到客戶(hù)端。外部CGI程序通過(guò)
環(huán)境變量、命令行參數、標準輸入輸出與WWW服務(wù)器進(jìn)行通訊,傳遞有關(guān)參數和處
理結果。*環(huán)境變量:當服務(wù)器守護進(jìn)程創(chuàng )建子進(jìn)程運行CGI程序時(shí),設置相應的
環(huán)境變量和命令行參數,以傳遞客戶(hù)端和服務(wù)器的有關(guān)信息給該子進(jìn)程。*命令行
參數:命令行參數僅在有HTML文檔中有ISINDEX查詢(xún)的情況下使用。*標準輸入輸
出:當HTTP請求模式采用POST方式時(shí),CGI程序通過(guò)標準輸入流和有關(guān)環(huán)境變量來(lái)
獲取客戶(hù)端傳輸數據;如采用GET方式時(shí),CGI程序直接通過(guò)環(huán)境變量獲取客戶(hù)端傳
輸數據。當CGI程序要返回處理結果(一般為HTML文檔)給客戶(hù)端時(shí),它通過(guò)標準
輸出流將該結果數據傳遞給服務(wù)器守護進(jìn)程。
2.緩沖CGI
標準CGI使用Stdin/Stdout來(lái)進(jìn)行數據通訊,這是由其最初開(kāi)發(fā)環(huán)境(Unix操作
系統)所決定的。但是許多Windows環(huán)境下的編程工具(如VB和Delphi等)是不支
持這種I/O方式的,這時(shí)就不能用它們來(lái)開(kāi)發(fā)基于標準CGI的應用程序。于是有些
服務(wù)器提出了緩沖CGI的概念。緩沖CGI亦稱(chēng)為WinCGI。此時(shí)CGI擴展程序與服務(wù)器
間通過(guò)緩沖CGI而不是標準CGI進(jìn)行通訊,而緩沖CGI與服務(wù)器間的通訊還是通過(guò)標
準CGI接口。后者由WWW服務(wù)器的內置緩沖處理程序實(shí)現。這幾部分的關(guān)系可用圖
1-2表示:緩沖CGI的工作原理與標準CGI相似,不同的是當服務(wù)器守護進(jìn)程接收
到客戶(hù)端的CGI請求時(shí),所建立的CGI子進(jìn)程將CGI請求的有關(guān)數據設置成環(huán)境變量
外,還將它們保存在輸入緩沖區中;通過(guò)緩沖處理程序在外部CGI程序與服務(wù)器間
建立兩條數據通道(輸入/輸出緩沖區)。CGI子進(jìn)程通過(guò)輸出緩沖區將處理結果
傳遞給服務(wù)器守護進(jìn)程。此處外部CGI程序通過(guò)環(huán)境變量和輸入/輸出緩沖區與WWW
服務(wù)器進(jìn)行通訊,傳遞有關(guān)參數和處理結果。此處環(huán)境變量的意義同上,不過(guò)這
些環(huán)境變量及其相應值保存在輸入緩沖區中。此外,輸入緩沖區中還存放客戶(hù)端
的傳輸數據(如采用POST模式的話(huà))。輸出緩沖區用來(lái)存放擴展程序的處理結果。
3.標準CGI與緩沖CGI的區別
對CGI擴展程序而言,最主要差別在于數據的I/O不同:對緩沖CGI,服務(wù)器與CGI
擴展程序間的數據交換是通過(guò)緩沖區;而標準CGI是通過(guò)標準I/O。使用緩沖CGI可
選擇更多的開(kāi)發(fā)工具,可以開(kāi)發(fā)Windows95和WindowsNT下的GUI擴展程序;而使用
標準CGI所選用的開(kāi)發(fā)工具必須支持標準I/O。只有少數幾種WWW服務(wù)器支持緩沖CGI,
因此基于它的擴展程序兼容性不如標準CGI好。
1.3CGI與其他WWW技術(shù)的關(guān)系
CGI作為WWW服務(wù)器的標準擴展技術(shù),由上面CGI的基本原理可知,它和許多其它的
WWW技術(shù)密切相關(guān),如HTTP、HTML、MIME和URL等,下面主要就它與前兩種技術(shù)的關(guān)
系進(jìn)行研究。
1.CGI與HTTP協(xié)議
CGI通過(guò)HTTP協(xié)議在客戶(hù)端和服務(wù)端進(jìn)行通訊:*客戶(hù)端用戶(hù)代理向服務(wù)器發(fā)送的
請求是HTTP請求消息。該消息中含有處理用戶(hù)輸入的CGI擴展程序的URL值。*CGI
擴展程序在處理結束后,返回給客戶(hù)端的應答是HTTP應答消息。因此CGI程序的輸
出數據必須符合HTTP應答消息的語(yǔ)法格式,這在基于CGI標準的開(kāi)發(fā)中非常重要。
2.CGI與HTML語(yǔ)言
CGI擴展程序的輸出數據(HTTP應答消息)一般有兩種:符合MIME類(lèi)型的文檔(最
普遍的是HTML文檔,表示為text/html);指向其它文檔的URL鏈接。這兩種方式
都與HTML語(yǔ)言有關(guān),數據的組織須符合HTML語(yǔ)法格式。
1.4CGI開(kāi)發(fā)的幾個(gè)問(wèn)題
基于WWW的人機交互一般有兩種情況:本地交互和通過(guò)網(wǎng)絡(luò )傳輸的交互。前者是指
客戶(hù)端用戶(hù)的輸入數據在客戶(hù)端本地進(jìn)行處理,然后將處理結果返回給用戶(hù),常
見(jiàn)的開(kāi)發(fā)工具有JavaScript(Netscape開(kāi)發(fā))和VBScript(Microsoft開(kāi)發(fā));后
者是指客戶(hù)端用戶(hù)輸入的數據通過(guò)網(wǎng)絡(luò )傳輸到WWW服務(wù)器,服務(wù)器處理結束后將處
理結果返回給客戶(hù)端用戶(hù),常見(jiàn)的開(kāi)發(fā)技術(shù)是WWW服務(wù)器擴展技術(shù)(如CGI,API等)。
此處主要討論基于標準CGI技術(shù)的通過(guò)網(wǎng)絡(luò )進(jìn)行數據傳輸的交互實(shí)現。對這種人機
交互的實(shí)現,主要有三個(gè)環(huán)節需要解決:如何獲取客戶(hù)端傳輸的數據,如何提取有
效數據并處理這些數據,如何向客戶(hù)端返回應答。下面分別結合有關(guān)技術(shù),談?wù)勥@
三方面問(wèn)題的解決。
1.客戶(hù)端傳輸數據的獲取
由第三章CGI的原理可知,當服務(wù)端守護進(jìn)程接收到客戶(hù)端用戶(hù)代理(如瀏覽器)
提交的CGI請求時(shí),所創(chuàng )建的CGI子進(jìn)程會(huì )設置與CGI請求內容有關(guān)的環(huán)境變量,并
建立服務(wù)器與外部CGI程序之間通訊的通道(即標準I/O)。CGI程序可以通過(guò)環(huán)境
變量,標準I/O或命令行參數獲取客戶(hù)端用戶(hù)輸入的數據。數據的獲取與請求所采
用的HTTP方法(Method)和用戶(hù)所使用的請求方式有關(guān)。用戶(hù)通過(guò)CGI請求數據一
般有三種方式:HTMLFORM表,ISINDEX,可點(diǎn)擊圖片(ISMAP或Imagemaps)。后兩
種方式是通過(guò)命令行參數傳遞用戶(hù)的輸入數據;在C語(yǔ)言中(下面的舉例亦然),
CGI程序可以用argc和argv[int]獲得這些參數值。而前一種方式則取決于HTTP請
求方法;但不管采用何種方法,都將用到環(huán)境變量來(lái)傳遞有關(guān)請求內容。
●獲取環(huán)境變量
環(huán)境變量的類(lèi)別很多,包含客戶(hù)端和服務(wù)端的詳細信息。在一般CGI程序開(kāi)發(fā)中,
下述幾個(gè)環(huán)境變量在數據傳遞中起著(zhù)重要作用。
*GATEWAY―INTERFACE
CGI程序所使用的CGI標準接口的版本號。如使用的CGI1.1版,該變量表示為
“CGI/1.1”
*REQUEST―METHOD
HTTP請求方法。根據該變量值可判斷CGI請求所采用的請求方法,以決定是通過(guò)Stdin
還是通過(guò)環(huán)境變量QUERY―STRING獲取客戶(hù)端傳輸數據。
*QUERY―STRING
QUERY―STRING是CGI程序URL中″?″之后的數據。當使用ISINDEX查詢(xún)或FORM表使
用GET方法時(shí),客戶(hù)端傳輸數據可以通過(guò)讀取該變量而獲得。
*CONTENT―LENGTH
CONTENT―LENGTH表示客戶(hù)端傳輸數據的字節數。
*CONTENT―TYPE
CONTENT―TYPE表示客戶(hù)端傳輸數據的數據編碼類(lèi)型。
利用―environ(int)函數可以獲得所有的環(huán)境變量及其值;
利用getenv(constchar*)函數可以獲得指定環(huán)境變量的相應值。
●HTTP請求方法
客戶(hù)端用戶(hù)代理提交的CGI請求是HTTP請求,其中包括HTTP請求方法。HTTP協(xié)議定義
的請求方法中常用的主要有GET和POST。
客戶(hù)端FORM表的METHOD屬性用來(lái)設置請求方法,其缺省值為GET。如果在FORM中使用
GET方法,CGI程序通過(guò)環(huán)境變量QUERY―STRING獲取客戶(hù)端傳輸數據。如果在FORM中
使用POST方法,CGI程序通過(guò)通過(guò)CONTENT―LENGTH獲取客戶(hù)端傳輸數據的字節數,
通過(guò)Stdin讀取客戶(hù)端傳輸數據。
2.有效數據的提取和處理
通過(guò)上述方式獲取的客戶(hù)端傳輸數據的一般格式為:
name[1]=value[1]&name[2]=value[2]&...name[i]
=value[i]...name[n]=value[n]
(1Ι=iΙ=n)
其中name[i]表示變量名,它是在FORM表中某輸入域的名字;value[i]表示變量
值,它是用戶(hù)在FORM表中某輸入域中輸入的值??蛻?hù)端傳輸數據的每對″Name=Value″
串由′&′字符分隔,其數據編碼類(lèi)型可以從環(huán)境變量CONTENT―TYPE獲取。CGI/1.1
版僅支持“application/x-www-form-urlen??coded”編碼方式。這種編碼方式和
URL的編碼方式一樣,遵循兩個(gè)規則:數據中的空格(ASCII碼值32)編碼成′+′號;
保留字符編碼成″%XX″形式,″XX″是該字符ASCII值的十六進(jìn)制表示,比如″$″
的編碼為″%24″,″?″的編碼為″%3F″。因此,要獲取客戶(hù)端用戶(hù)的輸入數據,
必須對上述獲取的數據進(jìn)行分離和解碼等處理。利用函數strtok()、strchr()等
可以實(shí)現數據分離處理,而數據的解碼則需要對整個(gè)數據串進(jìn)行掃描,將數據串中的
″%XX″復原為對應的ASCII碼。在提取到有效數據后,還可能進(jìn)行許多其他的處理,
如數據庫查詢(xún)等。這種處理與普通編程相同。
3.向客戶(hù)端返回應答
CGI程序處理結束后,通過(guò)標準輸出流將應答信息傳遞給服務(wù)器,再由服務(wù)器返回給發(fā)
出請求的客戶(hù)端。其輸出的應答信息是HTTP應答消息,它一般由兩部分組成:應答頭
和應答數據。常見(jiàn)的應答頭包括三種頭域:Content―Type(數據編碼類(lèi)型,用MIME類(lèi)
型表示),Location(特定文檔的URL,這種情況不直接向客戶(hù)端輸出內容而輸出該URL)
和Status(處理結果的狀態(tài)碼和狀態(tài)描述)。HTTP應答頭由幾行格式相同的文本構成,
每行的基本格式為:″頭域名:該域內容″。應答頭和應答體之間用一空行加LF(或
CR/LF)分隔。應答體為CGI擴展程序的輸出數據,其數據類(lèi)型應該與Content―Type
值相一致。CGI程序的輸出可以用printf()、puts()等標準I/O函數來(lái)實(shí)現。
4.CGI程序的開(kāi)發(fā)及其一般流程
在開(kāi)發(fā)CGI程序過(guò)程中,可根據實(shí)際情況(服務(wù)器提供的接口、實(shí)際需求和程序員經(jīng)驗
等)選擇編程語(yǔ)言,如C/C++,Perl,TCL,AnyUnixshell,VB,AppleScript。如
果選用C/C++等語(yǔ)言,必須編譯成可執行文件;如果選用Perl等解釋語(yǔ)言,服務(wù)器
必須安裝相應的解釋器。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
FastCGI—— CGI簡(jiǎn)介
post和get的區別
ARM
CGI簡(jiǎn)介
我所了解的cgi
boa 流程分析
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久