blob: 4384ec9abca126cd06d6227fcf0350427a94e62c [file] [log] [blame]
刘洪青6266f992017-05-15 21:21:03 +08001<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - CGI How To</title><style type="text/css" media="print">
2 .noPrint {display: none;}
3 td#mainBody {width: 100%;}
4</style><style type="text/css">
5code {background-color:rgb(224,255,255);padding:0 0.1em;}
6code.attributeName, code.propertyName {background-color:transparent;}
7
8
9table {
10 border-collapse: collapse;
11 text-align: left;
12}
13table *:not(table) {
14 /* Prevent border-collapsing for table child elements like <div> */
15 border-collapse: separate;
16}
17
18th {
19 text-align: left;
20}
21
22
23div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {
24 background-color: transparent;
25}
26div.codeBox {
27 overflow: auto;
28 margin: 1em 0;
29}
30div.codeBox pre {
31 margin: 0;
32 padding: 4px;
33 border: 1px solid #999;
34 border-radius: 5px;
35 background-color: #eff8ff;
36 display: table; /* To prevent <pre>s from taking the complete available width. */
37 /*
38 When it is officially supported, use the following CSS instead of display: table
39 to prevent big <pre>s from exceeding the browser window:
40 max-width: available;
41 width: min-content;
42 */
43}
44
45div.codeBox pre.wrap {
46 white-space: pre-wrap;
47}
48
49
50table.defaultTable tr, table.detail-table tr {
51 border: 1px solid #CCC;
52}
53
54table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {
55 background-color: #FAFBFF;
56}
57
58table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {
59 background-color: #EEEFFF;
60}
61
62table.defaultTable th, table.detail-table th {
63 background-color: #88b;
64 color: #fff;
65}
66
67table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {
68 padding: 5px 8px;
69}
70
71
72p.notice {
73 border: 1px solid rgb(255, 0, 0);
74 background-color: rgb(238, 238, 238);
75 color: rgb(0, 51, 102);
76 padding: 0.5em;
77 margin: 1em 2em 1em 1em;
78}
79</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="
Hongqing Liufd5ee812014-05-10 16:32:51 +080080 The Apache Tomcat Servlet/JSP Container
刘洪青6266f992017-05-15 21:21:03 +080081 " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>CGI How To</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>
Hongqing Liufd5ee812014-05-10 16:32:51 +080082<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Installation">Installation</a></li><li><a href="#Configuration">Configuration</a></li></ul>
83</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>
84
85<p>The CGI (Common Gateway Interface) defines a way for a web server to
86interact with external content-generating programs, which are often
87referred to as CGI programs or CGI scripts.
88</p>
89
90<p>Within Tomcat, CGI support can be added when you are using Tomcat as your
91HTTP server and require CGI support. Typically this is done
刘洪青6266f992017-05-15 21:21:03 +080092during development when you don't want to run a web server like
Hongqing Liufd5ee812014-05-10 16:32:51 +080093Apache httpd.
刘洪青6266f992017-05-15 21:21:03 +080094Tomcat's CGI support is largely compatible with Apache httpd's,
Hongqing Liufd5ee812014-05-10 16:32:51 +080095but there are some limitations (e.g., only one cgi-bin directory).
96</p>
97
98<p>CGI support is implemented using the servlet class
99<code>org.apache.catalina.servlets.CGIServlet</code>. Traditionally,
100this servlet is mapped to the URL pattern "/cgi-bin/*".</p>
101
102<p>By default CGI support is disabled in Tomcat.</p>
103</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Installation"><strong>Installation</strong></a></font></td></tr><tr><td><blockquote>
104
105<p><strong>CAUTION</strong> - CGI scripts are used to execute programs
106external to the Tomcat JVM. If you are using the Java SecurityManager this
107will bypass your security policy configuration in <code>catalina.policy.</code></p>
108
刘洪青6266f992017-05-15 21:21:03 +0800109<p>To enable CGI support:</p>
Hongqing Liufd5ee812014-05-10 16:32:51 +0800110
刘洪青6266f992017-05-15 21:21:03 +0800111<ol>
112<li><p>There are commented-out sample servlet and servlet-mapping elements for
113CGI servlet in the default <code>$CATALINA_BASE/conf/web.xml</code> file.
114To enable CGI support in your web application, copy that servlet and
115servlet-mapping declarations into <code>WEB-INF/web.xml</code> file of your
116web application.</p>
117
118<p>Uncommenting the servlet and servlet-mapping in
119<code>$CATALINA_BASE/conf/web.xml</code> file enables CGI for all installed
120web applications at once.</p>
121</li>
122
123<li><p>Set <code>privileged="true"</code> on the Context element for your
124web application.</p>
125
126<p>Only Contexts which are marked as privileged are allowed to use the
127CGI servlet. Note that modifying the global <code>$CATALINA_BASE/conf/context.xml</code>
128file affects all web applications. See
129<a href="config/context.html">Context documentation</a> for details.</p>
130</li>
131</ol>
Hongqing Liufd5ee812014-05-10 16:32:51 +0800132
133</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Configuration"><strong>Configuration</strong></a></font></td></tr><tr><td><blockquote>
134
135<p>There are several servlet init parameters which can be used to
刘洪青6266f992017-05-15 21:21:03 +0800136configure the behaviour of the CGI servlet.</p>
Hongqing Liufd5ee812014-05-10 16:32:51 +0800137<ul>
138<li><strong>cgiPathPrefix</strong> - The CGI search path will start at
139the web application root directory + File.separator + this prefix.
刘洪青6266f992017-05-15 21:21:03 +0800140By default there is no value, which results in the web application root
141directory being used as the search path. The recommended value is
142<code>WEB-INF/cgi</code></li>
143<li><strong>executable</strong> - The name of the executable to be used to
Hongqing Liufd5ee812014-05-10 16:32:51 +0800144run the script. You may explicitly set this parameter to be an empty string
145if your script is itself executable (e.g. an exe file). Default is
146<code>perl</code>.</li>
147<li><strong>executable-arg-1</strong>, <strong>executable-arg-2</strong>,
148and so on - additional arguments for the executable. These precede the
149CGI script name. By default there are no additional arguments.</li>
刘洪青6266f992017-05-15 21:21:03 +0800150<li><strong>envHttpHeaders</strong> - A regular expression used to select the
151HTTP headers passed to the CGI process as environment variables. Note that
152headers are converted to upper case before matching and that the entire header
153name must match the pattern. Default is
154<code>ACCEPT[-0-9A-Z]*|CACHE-CONTROL|COOKIE|HOST|IF-[-0-9A-Z]*|REFERER|USER-AGENT</code>
155</li>
Hongqing Liufd5ee812014-05-10 16:32:51 +0800156<li><strong>parameterEncoding</strong> - Name of the parameter encoding
157to be used with the CGI servlet. Default is
刘洪青6266f992017-05-15 21:21:03 +0800158<code>System.getProperty("file.encoding","UTF-8")</code>. That is the system
159default encoding, or UTF-8 if that system property is not available.</li>
Hongqing Liufd5ee812014-05-10 16:32:51 +0800160<li><strong>passShellEnvironment</strong> - Should the shell environment
刘洪青6266f992017-05-15 21:21:03 +0800161variables from Tomcat process (if any) be passed to the CGI script? Default is
Hongqing Liufd5ee812014-05-10 16:32:51 +0800162<code>false</code>.</li>
163<li><strong>stderrTimeout</strong> - The time (in milliseconds) to wait for
164the reading of stderr to complete before terminating the CGI process. Default
刘洪青6266f992017-05-15 21:21:03 +0800165is <code>2000</code>.</li>
Hongqing Liufd5ee812014-05-10 16:32:51 +0800166</ul>
Hongqing Liufd5ee812014-05-10 16:32:51 +0800167
刘洪青6266f992017-05-15 21:21:03 +0800168
169</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions
170 on improving documentation for Apache Tomcat.<br><br>
171 If you have trouble and need help, read
172 <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page
173 and ask your question on the tomcat-users
174 <a href="http://tomcat.apache.org/lists.html">mailing list</a>.
175 Do not ask such questions here. This is not a Q&amp;A section.<br><br>
176 The Apache Comments System is explained <a href="./comments.html">here</a>.
177 Comments may be removed by our moderators if they are either
178 implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--
179 var comments_shortname = 'tomcat';
180 var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/cgi-howto.html';
181 (function(w, d) {
182 if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {
183 d.write('<div id="comments_thread"><\/div>');
184 var s = d.createElement('script');
185 s.type = 'text/javascript';
186 s.async = true;
187 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
188 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
189 }
190 else {
191 d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');
192 }
193 })(window, document);
194 //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
195 Copyright &copy; 1999-2017, Apache Software Foundation
Hongqing Liufd5ee812014-05-10 16:32:51 +0800196 </em></font></div></td></tr></table></body></html>