CGI环境变量

2023-11-04

 

CGI环境变量

所有的CGI程序都接收以下的环境变量,这些变量在CGI程序中发挥了重要的作用:

变量名 描述
CONTENT_TYPE 这个环境变量的值指示所传递来的信息的MIME类型。目前,环境变量CONTENT_TYPE一般都是:application/x-www-form-urlencoded,他表示数据来自于HTML表单。
CONTENT_LENGTH 如果服务器与CGI程序信息的传递方式是POST,这个环境变量即使从标准输入STDIN中可以读到的有效数据的字节数。这个环境变量在读取所输入的数据时必须使用。
HTTP_COOKIE 客户机内的 COOKIE 内容。
HTTP_USER_AGENT 提供包含了版本数或其他专有数据的客户浏览器信息。
PATH_INFO 这个环境变量的值表示紧接在CGI程序名之后的其他路径信息。它常常作为CGI程序的参数出现。
QUERY_STRING 如果服务器与CGI程序信息的传递方式是GET,这个环境变量的值即使所传递的信息。这个信息经跟在CGI程序名的后面,两者中间用一个问号'?'分隔。
REMOTE_ADDR 这个环境变量的值是发送请求的客户机的IP地址,例如上面的192.168.1.67。这个值总是存在的。而且它是Web客户机需要提供给Web服务器的唯一标识,可以在CGI程序中用它来区分不同的Web客户机。
REMOTE_HOST 这个环境变量的值包含发送CGI请求的客户机的主机名。如果不支持你想查询,则无需定义此环境变量。
REQUEST_METHOD 提供脚本被调用的方法。对于使用 HTTP/1.0 协议的脚本,仅 GET 和 POST 有意义。
SCRIPT_FILENAME CGI脚本的完整路径
SCRIPT_NAME CGI脚本的的名称
SERVER_NAME 这是你的 WEB 服务器的主机名、别名或IP地址。
SERVER_SOFTWARE 这个环境变量的值包含了调用CGI程序的HTTP服务器的名称和版本号。例如,上面的值为Apache/2.2.14(Unix)

例1:

#!/usr/bin/perl
 
local ($buffer, @pairs, $pair, $name, $value, %FORM);
# 读取文本信息
$ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
if ($ENV{'REQUEST_METHOD'} eq "GET")
{
   $buffer = $ENV{'QUERY_STRING'};
}
# 读取 name/value 对信息
@pairs = split(/&/, $buffer);
foreach $pair (@pairs)
{
   ($name, $value) = split(/=/, $pair);
   $value =~ tr/+/ /;
   $value =~ s/%(..)/pack("C", hex($1))/eg;
   $FORM{$name} = $value;
}
$name = $FORM{name};
$url  = $FORM{url};
 
print "Content-type:text/html\r\n\r\n";
print "<html>";
print "<head>";
print '<meta charset="utf-8">';
print '<title>test</title>';
print "</head>";
print "<body>";
print "<h2>$name网址:$url</h2>";
print "</body>";
print "</html>";

例2:

#!/usr/bin/perl
 
local ($buffer, @pairs, $pair, $name, $value, %FORM);
# 读取文本信息
$ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
if ($ENV{'REQUEST_METHOD'} eq "POST")
{
   read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}else {
   $buffer = $ENV{'QUERY_STRING'};
}
# 读取 name/value 对信息
@pairs = split(/&/, $buffer);
foreach $pair (@pairs)
{
   ($name, $value) = split(/=/, $pair);
   $value =~ tr/+/ /;
   $value =~ s/%(..)/pack("C", hex($1))/eg;
   $FORM{$name} = $value;
}
$name = $FORM{name};
$url  = $FORM{url};
 
print "Content-type:text/html\r\n\r\n";
print "<html>";
print "<head>";
print '<meta charset="utf-8">';
print '<title>test</title>';
print "</head>";
print "<body>";
print "<h2>$name:$url</h2>";
print "</body>";
print "</html>";

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CGI环境变量 的相关文章

  • 从网站获取数据的vba代码

    我是这个网站和 VBA 编程的新手 我遇到了一个问题 我必须从中获取数据这一页 http www kieskeurig nl zoeken index html q 4960999543345 我需要有超链接网址Check Rates 10
  • 尝试访问我的网站时出现内部服务器错误

    我收到这个错误 内部服务器错误 服务器遇到内部错误或配置错误 无法完成您的请求 请联系服务器管理员 电子邮件受保护 cdn cgi l email protection和 告知他们错误发生的时间以及您可能会发生的任何事情 所做的事情可能导致
  • Electron 应用程序可以与 java 代码集成吗?

    由于node js仍然缺乏Java中存在的重要功能 因此我想使用Java而不是node js 并使用Web语言 html js css 创建客户端 Electron 是跨平台的 java 也是跨平台的 因此似乎有一个能够两全其美的解决方案
  • 在 html 中创建子页面 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 假设我有一个网站http www example com http www example com 如何为此页面创建更多子页面 即 w
  • JavaScript 中的对象解构[重复]

    这个问题在这里已经有答案了 gt a a true Statement lt a true 上面的语句是赋值true to a 为什么上面的语句在chrome控制台中没有报错 虽然下面的语句给出了错误 gt a a true Stateme
  • 电话链接在 iframe 中不起作用,但在 iOS 9 Web 中的 div 中起作用。如何使电话链接在 iOS 9 safari 中正常工作?

    您好 我正在尝试 iOS9 中 iframe 内的电话链接 iOS9 中的 safari 中无法打开手机应用程序 当我在里面尝试相同的链接时 它就在那里工作 我正在尝试下面的锚标记 将此代码放入 div 中时会打开手机应用程序 但同样的代码
  • 使用内容安全策略防止 Internet Explorer 11 上的内联 JavaScript

    是否可以使用 ASP NET WebForm 上的 CSP 来阻止 Internet Explorer 11 上的内联 JavaScript 我知道 IE 11 不支持内容安全策略级别 2 但它支持级别 1 0 我尝试了很多方法 但没有明确
  • 从 Harp.js 中的 EJS 模板调用另一个文件上的 javascript 函数

    尝试使用 Harp js 制作一个网站 我使用 ejs 模板 并希望将一些有用的 javascript 函数存储在中央文件中 我怎么做 我尝试使用 但它不起作用 似乎js文件没有被解析 有任何想法吗 谢谢 尽管有多种方法 有时 可以实现这一
  • 单击链接时启动本地应用程序

    我正在开发一个内部 Web 应用程序 它允许我为客户存储远程控制凭据 每次我想要连接到客户计算机时 我都需要启动远程支持软件 复制并粘贴用户名和密码 然后单击 开始 按钮 该软件将具有可用的命令行参数 允许我立即启动会话 但是 我不知道如何
  • 如何保护我的网站免遭 HTTrack 或其他软件的翻录?

    我最近获得了批准的网站模板主题森林 http themeforest net 我的网站流量过多 并注意到我在 Themeforest 上的演示被 HTTrack 等某些软件破坏 如果这种情况持续下去 该产品的销量最终可能会下降 那么 有什么
  • 使用“邮递员”chrome 应用程序的肥皂请求正文

    假日网络服务 的肥皂请求正文会是什么样子 http www holidaywebservice com HolidayService v2 HolidayService2 asmx wsdl http www holidaywebservi
  • Netty Nio java 中的通信

    我想在 Netty nio 中创建一个具有两个客户端和一个服务器的通信系统 更具体地说 首先 我希望当两个客户端与服务器连接时从服务器发送消息 然后能够在两个客户端之间交换数据 我正在使用本示例提供的代码 https github com
  • Firebase Auth - 最近登录多长时间

    我有一个个人资料选项卡 用户可以在其中按编辑并编辑他们的个人资料 我只想在必要时才需要他们的密码 所以想知道用户登录的时间是多少毫秒 这使得它不是最近登录 其中firebase会抛出错误 auth requires recent login
  • 使用 php ping 网站

    我想创建一个 php 脚本 它将 ping 一个域并列出响应时间以及请求的总大小 这将用于监控网站网络 我尝试过curl 这是我到目前为止的代码 function curlTest2 url clearstatcache return if
  • 尝试使用 php 发送 POST 请求,无论我做什么,我都会收到“HTTP ERROR 500”

    为了发出 HTTP 请求 有人建议我尝试使用 PHP 并给了我一段代码 url https example com dashboard api data array to gt PHONE NUMBER from gt SENDER ID
  • 如何从文件系统访问 api window.showDirectoryPicker() 获取选定的目录路径

    当我选择一个文件夹时 我确实得到了 dirHandle 但无法弄清楚什么属性或方法将为我提供完整路径 const dirHandle await window showDirectoryPicker 所以类似 let path dirHan
  • VBA - 如何从网站下载.xls并将数据放入Excel文件

    我设法使用 VBA 达到准备从网络下载 Excel 文件的程度 但我无法弄清楚如何实际下载该文件并将其内容放入我正在使用的 Excel 文件中 有什么建议么 谢谢 这是到目前为止的代码 Sub GetData Dim IE As Inter
  • wix 安装程序/创建网站并分配新的或现有的 Web 应用程序池

    我尝试使用 wix 安装创建一个新网站 没关系 没有问题 但我无法将新的或现有的网络应用程序池分配给新网站 iis website 标记不包含 WebAppPool 属性 我如何将网络应用程序池分配给网站 你可以在下面看到我的代码 感谢您的
  • java Web应用程序中的日期转换

    String date1 13 03 2014 16 56 46 AEDT SimpleDateFormat sdf new SimpleDateFormat dd MM yyyy HH mm ss z sdf setTimeZone Ti
  • ASP.net获取硬件信息

    如果我创建一个 ASP net 页面 我是否能够获取当前用户的 CPUID 和 BIOS 序列号 还是出于安全原因不允许这样做 我目前有一个获取这些值的 Visual Basic net 应用程序 我只是想知道是否可以在网页上执行相同的操作

随机推荐

  • Unity单元测试笔记

    Unity单元测试 在项目中安装NUnit 在unity面板中打开单元测试面板 在项目中安装NUnit 比如对测试用例代码中对缺乏引用的SetUp字段 按下快捷键Alt Enter 选择安装最新版本的NUnit using UnityEng
  • 11010序列检测器Verilog代码及仿真测试文件

    1 11010序列检测器 状态转移图 2 Verilog代码 module fsm x z clk rst data input clk rst x input 20 0 data output reg z reg 2 0 state ns
  • 作为程序员,赚取额外收入的 4个简单副业!

    对于程序员来说 可不是只有赚死工资这一条道路 好学编程给大家总结一下有哪些兼职渠道 以供大家参考 1 知识变现 一些问答平台比如微博 知乎 悟空问答 芝麻问答 饭团 知识星球 付费QQ群 付费社群等等 我们都可以挑选自己专业领域的问题选择回
  • 立体渲染(Stereo Rendering)

    首发于 GPU架构浅析 写文章 Multi View与Multi Viewport xiaocai Junio
  • spark学习9:sparkStreaming

    1 sparkStreaming是什么 sparkStreaming 其实是对RDD进行微批量处理 核心还是对RDD的操作 只不过spark是线程级的应用 实现秒级的运算是可以的 所以sparkStreaming并不是真正意义上的流处理 最
  • QT 发布打包 缺少依赖dll问题解决

    QT 在开发环境中测试时 开发环境会自动连接需要的依赖dll库 在产品发布时 需要将自己的exe和依赖的dll库 整体打包分发 避免其他设备缺少依赖的dll QT windeployqt exe 就是为了解决产品发布 打包问题的 有很多博客
  • python xlwt生成excel,列数大于256,分表

    usr bin python coding utf8 import xlwt def write data to excel print 开始生成 wbk xlwt Workbook sheets sheet wbk add sheet S
  • SGX技术的分析与研究 学习笔记

    SGX技术的分析与研究 学习笔记 SGX技术的分析与研究 学习笔记 1 SGX架构概述 2 SGX关键技术 2 1 Enclave安全容器 2 2 Enclave保护机制 2 2 1 内存访问语义 2 2 2 地址映射保护 2 2 3 En
  • FFmpeg入门详解之92:Live555学习之(一)-------Live555的基本介绍

    Live555学习之 一 Live555的基本介绍 前一阵子 因为项目需要 研究了一下Live555开源框架 研究的不是很深入 基本上把Live555当做API用了一下 但是毕竟也是本人看的第一个开源框架 在此记录总结一下 Live555是
  • ios sdk 穿山甲_iOS 穿山甲广告 SDK 的使用

    信息流广告 自定义使用时 相关类的使用 BUAdSlot 广告位类 加载广告时需要设置的广告位描述信息 传入广告的主要请求 ID 广告类型 位置等 BUMaterialMeta 广告数据的载体类 访问可以获取所有的广告属性 主要属性名 数据
  • LevelDB源码阅读-key

    levelDB中的key 前言 在levelDB中有五种不同的key 在正式分析memtable之前我们先介绍一下这5中不同的key user key ParsedInternalKey InternalKey LookupKey Memt
  • 7.4 初等矩阵和可逆性

    初等矩阵和可逆性 初等矩阵 对单位矩阵 进行 一次 初等变换 得到 初等矩阵一定是可逆的 gt 因为初等变换是可逆的 所以初等矩阵是可逆的 对于一般矩阵 如果可逆的话 怎样得到逆矩阵呢 根据之前的分析 gt 如果矩阵A可逆的话 即存在一系列
  • java输入只有一行_即三个整数_中间用空格隔开_蓝桥杯 算法训练 排序

    问题描述 编写一个程序 读入一组整数 这组整数是按照从小到大的顺序排列的 它们的个数N也是由用户输入的 最多不会超过20 然后程序将对这个数组进行统计 把出现次数最多的那个数组元素值打印出来 如果有两个元素值出现的次数相同 即并列第一 问题
  • 注解@Autowired是如何实现的

    1 Autowired注解用法 2 Autowired注解的作用到底是什么 Autowired这个注解我们经常在使用 现在 我想问的是 它的作用到底是什么呢 首先 我们从所属范围来看 事实上这个注解是属于spring的容器配置的一个注解 与
  • MySQL高级篇_第10章_索引优化与查询优化

    都有哪些维度可以进行数据库调优 简言之 索引失效 没有充分利用到索引 索引建立 关联查询太多JOIN 设计缺陷或不得已的需求 SQL优化 服务器调优及各个参数设置 缓冲 线程数等 调整my cnf 数据过多 分库分表 关于数据库调优的知识点
  • 如何看服务器请求信息,如何看服务器请求信息

    如何看服务器请求信息 内容精选 换一换 请求URI由如下部分组成 URI scheme Endpoint resource path query string 例如您需要获取华北 北京四区域设备管理服务的accessToken 查询到的En
  • LambdaQueryWrapper中常用方法

    LambdaQueryWrapper中常用方法 LambdaQueryWrapper实例1 2 链式查询 3 排序查询以及between and查询 4 修改
  • 微信记账小程序

    第1章 绪论 1 1 研究背景与意义 随着网络时代的到来 互联网的优势和普及时刻影响并改变着人们的生活方式 在信息技术迅速发展的今天 计算机技术已经遍及全球 使社会发生了巨大的变革 为了不受时间和地点的限制 智能手机用户可以通过移动网络访问
  • 量化投资学习-39:股市里看人生

    1 股市 1 1 股市就是一个舞台 股市就是一个大舞台 在这个舞台上 每天上演着无数的人生悲喜故事 股市上的每只股票背后都是一种人的人生故事 有大起大落 有平淡无奇 有蓄势待发 有气势如虹 有高楼起 有楼塌了 起起伏伏 跌跌宕宕才是规律 1
  • CGI环境变量

    CGI环境变量 所有的CGI程序都接收以下的环境变量 这些变量在CGI程序中发挥了重要的作用 变量名 描述 CONTENT TYPE 这个环境变量的值指示所传递来的信息的MIME类型 目前 环境变量CONTENT TYPE一般都是 appl