a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > Delphi > 正文

用Delphi編寫CGI程序(二)

2019-11-18 18:49:08
字體:
供稿:網(wǎng)友
在 上 一 講 中, 我 們 介 紹 了 CGI 程 序 的 功 能。 今 天, 我 們 進 入: 第 二 部 分、 CGI 程 序 設(shè) 計 的 概 念 。本 講 的 內(nèi) 容 是 深 入 了 解 CGI 程 序 的 基 礎(chǔ)。

本 系 列 講 座 是 用 Delphi 編 寫 CGI 程 序, 對 于 本 次 的 內(nèi) 容 Delphi 已 經(jīng) 封 裝 在 它 的 類 中, 您 也 許 認 為 本 講 沒 有 必 要。 但 我 認 為 CGI 的 優(yōu) 勢 之 一 是 可 用 的 開 發(fā) 語 言 多( 下 面 將 提 到 這 個 問 題), 而 本 講 的 內(nèi) 容 可 用 于 任 何 程 序 設(shè) 計 語 言 中( 包 括 Delphi )。 所 以, 要 發(fā) 揮 CGI 的 優(yōu) 勢, 本 講 的 內(nèi) 容 還 是 必 要 的; 再 說, 本 講 的 內(nèi) 容 是 深 入 了 解 CGI 程 序 的 基 礎(chǔ)。

2 、 CGI 規(guī) 范:

    通 常, WEB 服 務(wù) 器 是 一 臺 功 能 強 大 的 計 算 機, 但 不 可 能 利 用 所 有 處 理 能 力。 CGI 的 產(chǎn) 生 使 得 人 們 可 以 用 WEB 服 務(wù) 器 的 處 理 能 力 為 遠 程 客 戶 提 供 有 趣 的、 動 態(tài) 的 內(nèi) 容。 CGI 規(guī) 范 應(yīng) 用 于 WEB 服 務(wù) 器 及 運 行 在 WEB 上 的 應(yīng) 用 程 序。 它 不 是 HTTP 協(xié) 議 的 一 部 分, 但 大 多 數(shù) WEB 服 務(wù) 器 都 支 持 這 個 規(guī) 范, 如 NCSA httpd 、 CERN httpd 、 Apache httpd 、 IIS 及 我 們 使 用 的 OmniHTTPD 。

2.1 、 CGI 概 覽

    CGI 定 義 WEB 服 務(wù) 器、 瀏 覽 器 和 應(yīng) 用 程 序 之 間 的 相 互 操 作 中 共 同 遵 守 的 規(guī) 則 集。 例 如 通 過 WEB 瀏 覽 器 查 詢 遠 程 數(shù) 據(jù) 庫 系 統(tǒng):


2.2 、 語 言:

    CGI 程 序 可 以 使 用 WEB 服 務(wù) 器 上 可 以 執(zhí) 行 的 任 何 語 言 來 編 寫。 您 應(yīng) 該 選 用 最 熟 悉 和 最 適 合 目 前 工 作 的 語 言。 如: Perl 語 言 適 合 字 符 串 和 文 件 處 理, C 對 大 型 的、 復(fù) 雜 的 程 序 更 合 適, Visual Basic 和 Delphi 則 適 合 數(shù) 據(jù) 庫 的 處 理, 等 等。 下 面 是 常 用 的 CGI 編 程 語 言:

C
C++
Perl
Tcl
Python
Shell Scripts
Visual Basic
Delphi
Applescript

2.3 、 CGI 方 法:
    調(diào) 用 CGI 的 途 徑 稱 為 CGI 方 法。 主 要 有 三 種 CGI 方 法:

2.3.1 、 GET 方 法:
    GET 方 法 是 瀏 覽 器 向 WEB 服 務(wù) 器 提 出 請 求 的 方 法。 使 用 這 種 方 法 時, CGI 程 序 從 環(huán) 境 變 量 QUERY_STRING 中 獲 取 數(shù) 據(jù)。 CGI 程 序 為 了 得 到 輸 入 的 參 數(shù), 必 須 分 析 這 個 環(huán) 境 變 量。 當(dāng) 傳 輸 的 數(shù) 據(jù) 很 長 時, 應(yīng) 使 用 POST 方 法。

2.3.2 、 POST 方 法:
    使 用 POST 方 法 時, CGI 程 序 從 stdin ( 標(biāo) 準(zhǔn) 輸 入) 得 到 輸 入 數(shù) 據(jù)。 由 于 輸 入 數(shù) 據(jù) 的 最 后 沒 有 EOF ( 文 件 結(jié) 束 標(biāo) 志 End Of File ), CGI 程 序 為 了 正 確 讀 取 輸 入 數(shù) 據(jù), 必 須 使 用 環(huán) 境 變 量 CONTENT_LENGTH 值。 用 這 種 方 法 的 最 大 優(yōu) 點 在 于 可 以 傳 輸 大 量 數(shù) 據(jù), 而 GET 方 法 由 于 受 URL 長 度 的 限 制( 一 般 不 超 過 1024 字 節(jié)), 無 法 傳 輸 大 量 數(shù) 據(jù)。 這 時, POST 方 法 是 唯 一 的 選 擇。

2.3.3 、 HEAD 方 法:
    HEAD 方 法 基 本 同 于 GET 方 法, 只 是 它 是 從 WEB 服 務(wù) 器 向 瀏 覽 器 傳 輸 數(shù) 據(jù)。 而 且, 傳 輸 的 僅 僅 是 HTTP 的 頭 信 息。

2.4 、 接 口 規(guī) 范:
    下 面 將 介 紹 WEB 服 務(wù) 器 與 CGI 程 序 通 信 的 四 種 主 要 方 法: 環(huán) 境 變 量、 命 令 行、 標(biāo) 準(zhǔn) 輸 入 和 標(biāo) 準(zhǔn) 輸 出。( 根 據(jù) CGI Version 1.1 給 出)

2.4.1 、 環(huán) 境 變 量:

AUTH_TYPE : 如 果 服 務(wù) 器 支 持 確 認 并 且 腳 本 得 到 保 護, 給 出 確 認 的 類 型。

CONTENT_LENGTH : 給 出 以 字 節(jié) 為 單 位 的 用 POST 方 法 傳 輸 的 數(shù) 據(jù) 長 度。 用 GET 方 法 時 變 量 為 空。

CONTENT_TYPE : 給 出 用 POST 方 法 時 傳 輸 數(shù) 據(jù) 的 MINE 類 型。 當(dāng) 使 用 GET 方 法 時 變 量 為 空。 如: application/x-www-form-urlencoded 。

GETWAY_INTERFACE : 給 出 CGI 規(guī) 范 名 和 版 本 號, 如: CGI/1.1 。

PATH_INFO : 給 出 了 URL 中 CGI 程 序 名 之 后 的 附 加 路 徑 信 息。

PATH_TRANSLATED : CGI 程 序 的 物 理 路 徑, 通 常 是 WEB 根 目 錄、 腳 本 名 和 附 加 路 徑 信 息。

QUERY_STRING : URL 中 " ? " 字 符 后 的 信 息。 使 用 GET 方 法 時 此 環(huán) 境 變 量 給 出 輸 入 數(shù) 據(jù)。

REMOTE_ADDR : 提 出 請 求 的 遠 程 計 算 機 的 IP 。

REMOTE_HOST : 提 出 請 求 的 遠 程 計 算 機 的 名 字。

REMOTE_IDENT : 給 出 RFC 931 中 定 義 的 用 戶 名。

注: RFC 931 是 Internet 的 權(quán) 威 文 檔, 描 述 了 確 認 TCP 連 接 中 識 別 用 戶 的 方 法。 文 檔 在: http://sunsite.auc.dk/RFC/rfc/rfc931.html 。

REMOTE_USER : 給 出 提 出 請 求 的 客 戶 端 的 授 權(quán) 用 戶 名。

REQUEST_METHOD : 提 出 請 求 的 方 法, 可 以 是 GET 、 HEAD 和 POST 。

SCRIPT_NAME : 要 執(zhí) 行 CGI 程 序 的 虛 擬 路 徑, 如: /cgi-bin/query.cgi 。

SERVER_NAME : 運 行 WEB 服 務(wù) 器 軟 件 的 計 算 機 域 名 或 IP 地 址, 如: www.chinabyte.com 。

SERVER_PORT : WEB 服 務(wù) 器 的 端 口 號, 缺 省 值 是 80 。

SERVER_PROTOCOL : WEB 服 務(wù) 器 使 用 的 協(xié) 議 名 和 版 本 號, 如: HTTPD/1.0 。

SERVER_SOFTWARE : 執(zhí) 行 CGI 程 序 的 WEB 服 務(wù) 器 名。 格 式 為 " 服 務(wù) 器 名 / 版 本 號 " , 如: NCSA/1.5b5 。

HTTP_ACCEPT : 客 戶 端 發(fā) 送 的 "Accpect : 標(biāo) 題 行 " , 對 應(yīng) 于 客 戶 端 能 處 理 的 MIME 類 型, 格 式 為 " 類 型 / 子 類 型, 類 型 / 子 類 型 等 " , 如: */* , image/gif , image/jpeg 。

HTTP_REFERER : 是 Referer : 標(biāo) 題 行 的 目 錄, 包 含 了 CGI 請 求 時 的 表 單( Form ) 的 URL , 如: http://www.chinabyte.com/register.form 。

HTTP_USER_AGENT : 提 出 請 求 的 客 戶 端 瀏 覽 器 名, 如: Mozilla/1.2N ( Windows;I;32bit )。

    以 上 的 這 些 環(huán) 境 變 量 您 可 以 用 上 一 講 的 示 范 程 序 看 到。

2.4.2 、 命 令 行:

    CGI 命 令 行 只 在 用 ISINDEX 查 詢 時 才 用 到。 ISINDEX 查 詢 是 包 含 在 < ISINDEX> 和 < BASE HREP=".."> 之 間 的 特 殊 查 詢。 命 令 行 可 以 帶 多 個 參 數(shù)。

2.4.3 、 標(biāo) 準(zhǔn) 輸 入:

    使 用 POST 方 法 時, CGI 程 序 從 stdin 得 到 傳 輸 數(shù) 據(jù)。 前 面 講 過, 必 須 使 用 CONTENT_TYPE 和 CONTENT_LENGTH 環(huán) 境 變 量 值。 其 中 要 注 意 的 是, 數(shù) 據(jù) 中 的 URL 被 編 碼 了, 如 空 格 用 加 號 代 替、 ~ 由 %7E 代 替 等。

2.4.4 、 標(biāo) 準(zhǔn) 輸 出:

    CGI 程 序 通 過 標(biāo) 準(zhǔn) 輸 出 將 數(shù) 據(jù) 送 給 瀏 覽 器, 或 是 WEB 服 務(wù) 器 可 解 釋 的 命 令。 CGI 程 序 可 以 通 過 WEB 服 務(wù) 器 同 瀏 覽 器 對 話, 它 們 的 程 序 名 必 須 以 "nph-" 開 頭, 代 表 未 經(jīng) 分 析 的 頭 信 息。 CGI 程 序 負 責(zé) 返 回 給 瀏 覽 器 的 HTTP 頭 信 息 的 正 確 性。

    在 不 使 用 nph- 程 序 時, 服 務(wù) 器 查 找 CGI 可 能 返 回 的 三 種 特 殊 的 頭 信 息:

Content-type : MIME 類 型 的 頭 信 息, 如: 輸 入 HTML 時, 常 用 "Content-type:text/html " 。

Location : 告 知 服 務(wù) 器 你 正 指 向 別 的 文 檔。 服 務(wù) 器 或 者 重 定 向 客 戶, 或 者 發(fā) 送 文 檔 內(nèi) 容, 這 取 決 于 URL 是 完 整 路 徑 還 是 相 對 路 徑。

Status : 服 務(wù) 器 送 給 客 戶 端 的 狀 態(tài) 行。 格 式 為: nnnXXXXX , nnn 是 一 個 三 位 數(shù) 編 碼, 而 XXXXX 是 相 對 應(yīng) 的 描 述 文 本。

上一篇:用Delphi編寫CGI程序(三)

下一篇:用Delphi編寫CGI程序(一)

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
學(xué)習(xí)交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網(wǎng)友關(guān)注

主站蜘蛛池模板: 欧美成人在线免费观看 | 91久色 | 男女国产网站 | 2018国产大陆天天弄 | 国产精品久久久久无码av | 亚洲精品影院 | aaa日本高清在线播放免费观看 | 亚洲福利影院 | 欧美色涩| 久久久久久久久久久久久九 | 91精品国产综合久久久蜜臀粉嫩 | 亚洲欧美日韩另类精品一区二区三区 | 亚洲国产精品成人综合色在线婷婷 | 国产高清在线精品一区二区三区 | 欧美2区 | 黄色片在线免费观看 | 久久高清片 | 中文字幕三区 | 国产精品一区二区三区不卡 | 亚州视频一区二区三区 | 国产乱精品一区二区三区 | 久久久久久久网 | 欧美电影一区 | 国产三级电影 | 一本一道久久久a久久久精品91 | 日韩最新av | 日日日操| 国产精品乱码一区二区三区 | 久久精品久久综合 | 91精品国产综合久久精品 | 欧美激情综合五月色丁香小说 | 欧美一区二区三区在线看 | 干干干操操操 | 屁屁影院一区二区三区 | 久久1区2区3区 | 久久久久无码国产精品一区 | 日韩免费在线观看视频 | 日本一级毛片视频 | 午夜视频在线播放 | 国产超碰人人爽人人做人人爱 | 欧美综合一区二区三区 |