@@ -0,0 +1,124 @@
1 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <title>How C<h2>Introduction</h2><blockquote>le>
2 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <h2>Introduction</h2>
4 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
5 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <p>CGI or "Common Gateway Interface" is a venerable yet reliable technique for
6 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ generating dynamic web content. This article give a quick background on how
7 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CGI works and describes how Fossil can act as a CGI service.
8 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <p>This is a "how it works" guide. If you just want to set up Fossil
9 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ as a CGI server, see the [./server.wiki | Fossil Server Setup] page.eview Of CGI</h2>
10 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
11 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ An HTTP<blockquote R<p>request is a block of text that is sent by a client application
12 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (usually a web browser) and arrives at the web server over a network
13 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ connection. The HTTP request contains a URL that describes the information
14 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ being requested. The URL in the HTTP request is typically the same URL
15 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ that appears in the URL bar at the top of the web bra "?" character followed by
16 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ query parameters. The HTTP will usually also contain other information
17 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ such as the name of the application that made the request, whether or
18 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ not the requesting application can accept a compressed reply, POST
19 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ parameters from forms, and so fexver is to interpret the HTTP request and<p>erpret the HTTP request and formulate
20 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ an appropriate reply.
21 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ The web server is free to interpret the_HTTP .
22 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Buest in any way it_HTTP request in any way it wants,
23 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ but most web servers fwww.fossil-scm.org/fossile: details may vary from one web server to another.)
24 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
25 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Suppose <p>he URL in the HTTP request looks lURL inppropriate reply.
26 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ search tb></blockquote> servers will search their content area for files that match
27 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ some prefix of the URL. The search starts with <b>/one</b>, then goes to
28 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <b>/one/two</b>, then <b>/one/two/timeline</b>, and finally
29 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <b>/one/two/timeline/f
30 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ at describchecked. The search stops at the first
31 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ match.
32 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
33 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Suppose the first match is <b>/one/<p>two</b>. If <b>/one/two</b> is an
34 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ordinary file in the content area, then that file is returned as static
35 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ content. The "<b>/timeline/four</b>" suffix is silently ignored.
36 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
37 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ If <b>/one/two</b> is a CGI script <p>
38 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ e/two</b> is an
39 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ordinar<title>How C<h2>Introduction</h2><blockquote>le>
40 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
41 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <h2>Introduction</h2>
42 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
43 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CGI or "Common Gateway Interface" is a venerable yet reliable tech2>It application
44 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (usually a web browser) and arrives at the web server over a network
45 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ connection. The HTTP request contains a URL that describes the information
46 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ being requested. The URL in the HTTP request is typically the same URL
47 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ that appears in the URL bar at the top of the web bra "?" character followed by
48 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ query parameters. The HTTP will usually also contain other information
49 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ such as the name of the application that made the request, whether or
50 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ not the requesting application can accept a compressed reply, POS uested. The URL in the HTTP request is typically the same URL
51 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ that appears in the URL bar at the top of the web bra "?" character followed by
52 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ query parameters. The HTTP will usually also contain other information
53 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ such as the name of the application that made the request, whether or
54 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ not the requesting application can accept a compressed forms, and so fexver is to interpret the HTTP request and<p>erpret the HTTP request and formulate
55 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ an appropriate reply.
56 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ The web server is free to interpret the_HTTP .
57 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Buest in any way it_HTTP request in any way it wants,
58 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ but most web servers fwww.fossil-scm.org/fossile: details may vary from one web server to another.)
59 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
60 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Suppose <p>he URL in the HTTP request looks lURL inppropriate reply.
61 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ search tb></blockquote> servers will search their content area for files that m r "Common Gateway Interface" is a venerable yet reliable technique for
62 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ generating dynamic web content. This article gives a quick background on how
63 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CGI works and describes how Fossil can act as a CGI service.
64 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <p>This is a "how it works" guide. If you just want to set up Fo<<b>/one/<p>two</b>. If <b>/one/two</b> is an
65 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ordinary file in the content area, then that file is returned as static
66 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ content. The "<b>/timeline/four</b>" suffix is silently ignored.
67 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
68 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ If <b>/one/two</b> is a CGI script <p>
69 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ e/two</b> is an
70 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ordinar<title>How C<h2>Introduction</h2><blockquote>le>
71 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
72 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <h2>Introduction</h2>
73 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
74 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CGI or "Common Gateway Interface" is a venerable yet reliable tech2>It application
75 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (usually a web browser) and arrives at the web server over a network
76 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ connection. The HTTP request contains a URL that describes the information
77 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ being requested. The URL in the HTTP request is typically the same URL
78 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ that appears in the URL bar at the top of the web kra "?" character followed by
79 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ query parameters. The HTTP will usually also contain other information
80 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ such as the name of the application that made the request, whether or
81 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ not the requesting application can accept a compressed reply, POST
82 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ parameters from forms, and so forth.
83 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
84 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ The job of the web server is to interpret the so fexver is to interpret the HTTP request arpret the HTTP request and formulate
85 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ an appropriate reply.
86 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ The web server is free to interpret the_HTTP .
87 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Buest in any way it_HTTP request in any way it wants,
88 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ but most web servers fwww.fossil-scm.org/fossile: details may vary from one web server to another.)
89 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
90 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Suppose <p>he URL in the HTTP request looks lURL inppropriate reply.
91 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ search tb></blockquote> servers will search their content area for files that match
92 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ some prefix of the URL. The search starts with <b>/one</b>, then goes to
93 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <b>/one/two</b>, then <br>/one/two/timeline</b>, and finally
94 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <b>/one/two/timeline/four</b> is checked. The search stops at the first
95 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ match.
96 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
97 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Suppose the first match is <b>/one/<p>two</b>. If <b>/one/two</b> is an
98 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ordinary file in the content area, then that file is returned as static
99 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ content. The "<b>/timeline/four</b>" suffix is silently ignored.
100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ If <b>/one/two</b> is a CGI script <p>
102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ e/two</b> is an
103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ordinar<title>How C<h2>Introduction</h2><blockquote>le>
104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <h2>Introduction</h2>
106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CGI or "Common Gateway Interface" is a venerable yet reliable tech2>It application
108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (usually a web browser) and arrives at the web server over a network
109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ connection. The HTTP request contains a URL that describsTP request is typically the same URL
110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ that appears in the URL bar at the top of the web bra "?" character followed by
111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ query parameters. Thyourstuff.comr or
112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ not the rech as the name of the application that made the reques t, whether or
113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ not the requesting application can accept a compressed reply, POST
114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ parameters from forms, and so forth.
115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ The job of the web server is to interpret the HTTP request andwww.fossil-scm.org/fossil
117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Many Fossil servers implementwww.fossil-scm.org/fossil/three?abc=xyz|test-env]
118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ webpage that shows some of the CGI environment
119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ variables that Fossil pays attention to.
120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ In addition to setting various CGI environment variables, if the HTTP
122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ request conta<p>, if the HTTP
123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ request contains POST content, then the web server relays the POST content
124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ to standard input of the CGI s