简介
CGI(通用网关接口)定义了一种 Web 服务器与外部内容生成程序的交互方式,这里所说的外部内容生成程序通常被称为 CGI 程序或 CGI 脚本。
当你使用 Tomcat 做为 HTTP 服务器,并且需要 CGI 支持时,可以在 Tomcat 中添加 CGI 支持。Tomcat 的 CGI 支持很大程度上能够跟 Apache 的httpd's 相兼容,但也存在一些局限(比如只有一个 cgi-bin 目录)。
CGI 支持是通过 servlet 类 org.apache.catalina.servlets.CGIServlet
来实现的。一般而言,该 servlet 与 URL 模式“/cgi-bin/*” 相对应。
Tomcat 默认不支持 CGI。
安装
警告:CGI 脚本用于执行 Tomcat JVM 外部的程序。如果使用 Java 的 SecurityManager,则它将绕过
catalina.policy
中配置的安全策略。
为了启用 CGI 支持:
-
在默认的
$CATALINA_BASE/conf/web.xml
文件中,存在被注释掉的用于 CGI servlet 的范例 servlet 及 servlet-mapping 元素。在 Web 应用中启用 CGI 支持,需要将 servlet 和 servlet-mapping 声明都复制到 Web 应用的WEB-INF/web.xml
文件中。 -
在 Web 应用中的 Context 元素中设置
privileged="true"
。只有享有特权的上下文才能被允许使用 CGI servlet。注意,修改全局
$CATALINA_BASE/conf/context.xml
文件会影响所有的 Web 应用。查阅 Context 文档来了解详情。
配置
下面是用来配置 CGI servlet 行为的一些 Servlet 初始参数: