通用网关接口(CGI)环境变量参考

披露: 您的支持有助于保持网站的正常运行!我们会为此页面上推荐的某些服务收取推荐费.


最初,Web主要只是用于发送和接收HTTP请求的系统。浏览器将要求发送带有HTTP请求的页面,服务器将页面发送到浏览器。该页面本身可能包含诸如对图像的引用之类的内容,浏览器将通过更多HTTP请求来请求这些图像。一切都非常简单。但是它不允许服务器进行处理。结果,开发了通用网关接口(CGI).

使用CGI,浏览器可以将带有输入的请求发送到服务器,而CGI程序可以将基于发送的输入处理的网页发送回去。举一个早期的例子:一个CGI程序,它返回有关化学化合物的信息。浏览器会将带有用户所需数据的化合物的请求发送到CGI程序,并且该程序将发送回一个页面,其中填充了有关该化合物的信息.

最终,开发了诸如PHP和Python之类的服务器编程语言,但在那时,已经有了CGI。尽管如此,CGI仍具有独特的能力:它与语言无关。如果服务器可以运行该程序,则CGI可以处理它。因此它可能是编译的C ++程序或解释的Perl脚本或几乎所有其他内容.

如今,CGI程序大部分都是遗留的。但是有时它仍然是解决问题的最佳方法。让我们仔细看看作为系统基础的环境变量.

变数

如果您正在考虑CGI编程,以下变量对于处理各种服务器请求以处理表单数据会非常有用,从而产生功能强大且用途广泛的程序。要访问这些变量,您必须从引用环境的值数组中检索条目。例如,在Perl中,您将使用类似于以下内容的环境变量键来检索$ ENV数组中的值:

$ ENV {$ env_var}

在上面的代码摘录中,env_var指的是环境变量键或字符串,例如SERVER_NAME。其他编程语言具有自己的用于管理环境变量的系统。检查参考以了解您的特定语言.

以下是CGI变量及其作用:

AUTH_TYPE

某些Web服务器使用授权来保护对CGI脚本的访问。 AUTH_TYPE变量是指服务器用来验证用户的授权类型。例如,此变量的可能值可以是Basic,指的是Basic身份验证。请注意,并非所有服务器都支持授权.

CONTENT_LENGTH

CONTENT_LENGTH以字节数给出通过请求传递的内容的长度。如果长度未知,则变量将设置为-1.

内容类型

CONTENT_TYPE变量包含请求返回的文件类型。例如,如果请求网页,则将CONTENT_TYPE变量设置为MIME类型text / html.

GATEWAY_INTERFACE

如果您想知道服务器处理的CGI规范版本,则可以查询GATEWAY_INTERFACE。该变量将有助于确保您使用的规范版本和有效命令正确.

HTTP_ACCEPT

就像CONTENT_TYPE提供传递的数据或MIME类型一样,HTTP_ACCEPT列出发出请求的客户端可以接受的所有可能的MIME类型。类型列表用逗号分隔.

HTTP_USER_AGENT

HTTP_USER_AGENT给出客户端用来发送请求的程序的名称。例如,如果用户从Mozilla Firefox执行CGI脚本,则HTTP_USER_AGENT将指示该用户通过Firefox向Web服务器发出了请求.

PATH_INFO

PATH_INFO变量包含在CGI脚本名称之后显示的其他信息。例如,如果执行www.placeholder.com/cgi-bin/hello.pl/index.html,则此示例的PATH_INFO将是CGI脚本名称或/index.html之后的字符。.

PATH_TRANSLATED

在Web浏览器上键入CGI脚本的地址时,通常会键入虚拟路径,该虚拟路径映射到服务器上的物理位置。例如,如果您访问http://www.somewebsite.com/cgi-bin/index.cgi并查询PATH_TRANSLATED变量,则将获得实际的物理路径。如果您在共享的UNIX服务器上,则可能是/home/placeholder/public_html/cgi-bin/index.cgi.

虚拟主机优惠券

需要优质的CGI访问托管?
GreenGeeks在我们的速度和性能测试中得分很高。读者目前最多可以节省其计划的60%。使用此特殊折扣链接
得到交易.

请求参数

通常会在问号后看到附加到URL的查询信息。对于URL http://www.placeholder.com/cgi-bin/hello.cgi?name=Leroy&exclamation = true,请求QUERY_STRING将以name = Leroy返回&感叹号= true被返回.

REMOTE_ADDR

REMOTE_ADDR变量提供发出请求的客户端计算机的IP地址。本质上,REMOTE_ADDR被解析为IP地址.

远程主机

Web服务器不断接受来自客户端的连接和请求。 REMOTE_HOST变量引用执行请求的客户端的主机名。例如,如果您的Web主机接受来自webhost2.com的请求,则REMOTE_HOST将填充为webhost2.com.

REMOTE_IDENT

REMOTE_IDENT变量存储运行CGI脚本的用户ID。仅在ident进程正在运行时才存储用户ID,因为ident返回的响应不仅包含用户ID信息,还包含运行脚本的OS的名称。.

REMOTE_USER

查询REMOTE_USER变量将给出发出请求的实体的用户名信息。仅在启用身份验证的情况下有效.

REQUEST_METHOD

REQUEST_METHOD提供已完成的HTTP请求的类型,其中包括诸如GET,POST和PUT之类的值.

SCRIPT_NAME

相反,如果要获取正在执行的脚本的虚拟路径,则只需查询SCRIPT_NAME变量即可。例如,如果您运行脚本http://www.placeholder.com/cgi-bin/ping.sh并检索SCRIPT_NAME,则将获得脚本的虚拟路径或/cgi-bin/ping.sh.

服务器名称

SERVER_NAME变量提供服务器的全名。例如,如果您查询此变量,则结果将是网站的域名。例如,类似www.placeholder.com的东西.

服务器端口

网络上运行的任何服务器都具有地址和端口。服务器使用端口来接受连接并侦听请求。标准端口是80,但也可以是其他数字-特别是对于特殊应用。查询SERVER_PORT变量将得到监听端口的值.

SERVER_PROTOCOL

您可以找出服务器使用什么协议来处理请求。例如,如果您正在使用的服务器使用HTTP协议,它将返回类似“ HTTP / 1.1”的字符串,这意味着该服务器正在使用HTTP版本1.1。基本上,返回的字符串采用协议/版本格式.

SERVER_SOFTWARE

SERVER_SOFTWARE环境变量包含Web服务器上运行的软件的名称和版本。例如,如果输出此变量的值并且正在运行Apache版本,则可能会得到类似于以下内容的信息:

阿帕奇2.4.25

结论

了解CGI或HTTP协议的第一步是使自己熟悉基础变量和语法。这包括刚才概述的环境变量。尽管CGI在今天很少使用,但是许多当前的Web开发语言(例如PHP)也使用其中的许多变量。结果,学习它们也将帮助您即使对于当前的Web开发语言也可以编写强大的程序.

进一步阅读和资源

我们有更多与编码和开发有关的指南,教程和信息图:

  • PHP简介和资源:这是网络上最大的编码语言之一.
  • CGI入门:CGI基础入门.
  • CGI教程和资源:了解如何最大限度地利用CGI.

您应该学习什么代码?

对应该学习哪种编程语言感到困惑?查看我们的信息图,您应该学习什么代码?它不仅讨论了语言的不同方面,还回答了一些重要问题,例如:“我将以编程为生赚多少钱?”

您应该学习什么代码?
您应该学习什么代码?

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map