Tomcat CGI

2022-03-03 11:46 更新

簡介

CGI(通用網(wǎng)關(guān)接口)定義了一種 Web 服務器與外部內(nèi)容生成程序的交互方式,這里所說的外部內(nèi)容生成程序通常被稱為 CGI 程序或 CGI 腳本。

當你使用 Tomcat 做為 HTTP 服務器,并且需要 CGI 支持時,可以在 Tomcat 中添加 CGI 支持。Tomcat 的 CGI 支持很大程度上能夠跟 Apache 的httpd's 相兼容,但也存在一些局限(比如只有一個 cgi-bin 目錄)。

CGI 支持是通過 servlet 類 org.apache.catalina.servlets.CGIServlet 來實現(xiàn)的。一般而言,該 servlet 與 URL 模式“/cgi-bin/*” 相對應。

Tomcat 默認不支持 CGI。

安裝

警告:CGI 腳本用于執(zhí)行 Tomcat JVM 外部的程序。如果使用 Java 的 SecurityManager,則它將繞過 catalina.policy 中配置的安全策略。

為了啟用 CGI 支持:

  1. 在默認的 $CATALINA_BASE/conf/web.xml 文件中,存在被注釋掉的用于 CGI servlet 的范例 servlet 及 servlet-mapping 元素。在 Web 應用中啟用 CGI 支持,需要將 servlet 和 servlet-mapping 聲明都復制到 Web 應用的 WEB-INF/web.xml 文件中。

  2. 在 Web 應用中的 Context 元素中設置 privileged="true"

    只有享有特權(quán)的上下文才能被允許使用 CGI servlet。注意,修改全局$CATALINA_BASE/conf/context.xml 文件會影響所有的 Web 應用。查閱 Context 文檔來了解詳情。

配置

下面是用來配置 CGI servlet 行為的一些 Servlet 初始參數(shù):

  • cgiPathPrefix 搜索 CGI 腳本的路徑,一般從 Web 應用根目錄 + 文件.分隔符 + 這個前綴開始搜索。該參數(shù)默認為空值,從而使得 Web 應用根目錄被用作搜索路徑。建議取值為:WEB-INF/cgi。
  • debug 該 servlet 所記錄信息調(diào)試細節(jié)度。默認為 0。
  • executable 用于運行腳本的可執(zhí)行文件后綴名,如果腳本自身就是可執(zhí)行文件(比如 .exe 文件),則可以將該參數(shù)顯式設置為空的字符串。默認是 perl,即默認是 perl 腳本。
  • executable-arg-1 與 executable-arg-2,等等 executable 的其他參數(shù)。它們位于 CGI 腳本名稱之前。默認不存在其他額外參數(shù)。
  • parameterEncoding CGI Servlet 所使用的參數(shù)編碼名稱,默認為 System.getProperty("file.encoding","UTF-8")。首選系統(tǒng)默認編碼,如果系統(tǒng)屬性不可用,則采用 UTF-8 編碼。
  • passShellEnvironment 是否應將 Tomcat 過程的 shell 環(huán)境變量(如果存在)傳入 CGI 腳本?默認為 false。
  • stderrTimeout 在終止 CGI 過程之前,等待標準錯誤輸出信息(stderr)讀取完畢的時間(以毫秒計)。默認為 2000。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號