Search notes:

CGI

CGI = Common Gateway Interface
CGI uses environment variables to communicate a web request to a program.
The following simple Perl script shows all environment variables that a CGI implementation passes to the script:
#!/bin/perl
use warnings;
use strict;

print "Content-Type: text/plain; charset=UTF-8\r\n\r\n";

for my $key (keys %ENV) {

  my $val = $ENV{$key};
  $val =~ s/\n/<CR>/g;
  printf "%-30s: %s\n", $key, $val;
}
Github repository about-CGI, path: /perl/echo-env-vars.pl
It might print something like
SCRIPT_NAME                    /cgi-bin/echo-env-vars.pl
SERVER_NAME                    renenyffenegger.ch
SERVER_ADMIN                   mail@....
HTTP_ACCEPT_ENCODING           gzip, deflate
HTTP_CONNECTION                keep-alive
REQUEST_METHOD                 GET
HTTP_ACCEPT                    text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
SCRIPT_FILENAME                /home/httpd/vhosts/username/cgi-bin/echo-env-vars.pl
SERVER_SOFTWARE                Apache
HTTP_ACCEPT_CHARSET            *
QUERY_STRING                   foo=bar
REMOTE_PORT                    59300
HTTP_USER_AGENT                Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Ubuntu/10.10 Chromium/12.0.742.112 Chrome/12.0.742.112 Safari/534.30
SERVER_PORT                    80
HTTP_ACCEPT_LANGUAGE           en-US,en;q=0.5
HTTP_COOKIE                    __utma=229995167.280608987.1485871259.1485871259.1486026955.2; __utmz=229995167.1485871259.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)
REMOTE_ADDR                    178.197.232.160
SERVER_PROTOCOL                HTTP/1.1
PATH                           /usr/local/bin:/usr/bin:/bin
REQUEST_URI                    /cgi-bin/show-env.pl
GATEWAY_INTERFACE              CGI/1.1
SERVER_ADDR                    xx.yyy.yyy.zz
DOCUMENT_ROOT                  /home/httpd/vhosts/username/httpdocs
HTTP_HOST                      renenyffenegger.ch
UNIQUE_ID                      VJx4-4BeECz-rxD9qb34dgCAACu
Of particular interest is QUERY_STRING: it shows the value that was passed after the ? (in a GET request)

See also

Perl modules such as CGI and HTTP::Server::Simple::CGI.
web
The PHP function getenv()
CGI is specified in 3875 The Common Gateway Interface (CGI) Version 1.1 and introduced with NCSA HTTPd.

Index