CGI的基本定义和优劣势是什么

2023-11-18

  通用网关接口 (CGI) 是网络服务器之间的交集,通过它可以在外部应用程序和服务器之间进行标准化数据交换。它属于现存最古老的在线界面技术,至今仍被一些知名虚拟主机提供商使用。使用CGI 时,HTML页面不需要存储在服务器上,而是可以在用户进行网站查询时动态创建。

  当用户在网站上输入时,数据不会直接传输到服务器,而是需要先进行处理。此处理通过外部软件(例如CGI 脚本)进行,而不是直接通过网络服务器进行。该程序通过标准化的CGI交集传输数据,该交集以 HTML 格式生成信息。CGI程序通常保存在网络服务器上的一个特殊文件夹中。CGI脚本可以用不同的编程语言编写。通用网关接口确保——无论使用何种语言——网络服务器和脚本相互通信。

  优点

  CGI是生成动态网站内容的一种简单有效的方法。同时,CGI 应用程序不必保存在服务器上,因此不会不必要地使用任何资源。此外,通用网关接口与多种编程语言兼容,可以轻松集成到现有基础设施中。最后但同样重要的是,开源标准是免费的,开发人员可以立即使用。

 

  缺点

  通用网关接口的最大弱点之一是回复 CGI 应用程序的时间可能相对较长。每个新条目都需要重新启动该程序。这对于遇到高流量的网站来说可能是个问题,服务器通常一次只支持少数CGI应用程序,并且额外的查询被添加到队列或被拒绝。

  如果没有采取额外的安全措施,通用网关接口与任何接口都非常相似,可能会带来安全风险。理论上,外部程序可以通过CGI访问网络服务器数据。因此,应该对CGI脚本进行限制,以免造成任何损害。

  下面提到另外一个概念,即CGI脚本。CGI脚本是大多数服务器与其他程序和脚本通信的方式,是简单的文本文件、代码行,根据服务器的请求进行解释,该脚本将与其他程序以及网页的HTML 内容一起工作,由于HTML本身仅允许显示信息,因此CGI脚本赋予HTML与访问者交互的能力。CGI脚本可以用Perl、PHP、C、Visual Basic或Python编写。CGI本身不是一种编程语言。CGI脚本的一个例子是:购物车系统、点击计数器、留言簿、订单、邮件、地图等。它更像是一种用于网络服务器和脚本之间通信的协议。Perl和PHP似乎是首选语言,因为它们易于学习并且非常便携。

  以上介绍的是CGI的基本定义和优劣势。最近一直想要一款虚拟主机,找遍了知名主机提供商,最终选择了Hostease的虚拟主机。该产品不仅支持完全CGI访问还提供Canned CGI脚本,再搭配R1Soft备份服务,购买后才发现真的是物超所值。
 

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

CGI的基本定义和优劣势是什么 的相关文章

  • 让登录更安全

    我已使用此代码进行管理员登录 仅当用户输入正确的用户名和密码时才应打开loginhome php 但后来我意识到这根本不安全 任何人都可以直接访问 mywebsite loginhome php 而无需登录 注销后 可以使用后退按钮打开 l
  • 搜索引擎如何找到相关内容? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Google 在解析网络时如何找到相关内容 例如 Google 使用 PHP 原生 DOM 库来解析内
  • 当数据验证失败时保留表单字段中的值

    我在弄清楚验证失败时如何保留用户数据时遇到问题 我对 PHP 有点陌生 所以我的逻辑可能会犯一些巨大的错误 目前 如果验证失败 所有字段都会被清除 并且 Post 数据也会消失 这是一些代码 假设用户输入无效电子邮件 我希望保留 名称 字段
  • 如何解压 PHP/Lumen/Laravel 的 gzip 请求?

    我收到来自第三方的 gzip 编码文本请求 1mb 所以这是有道理的 我的测试路线 router gt post testgzip function Illuminate Http Request request decompressed
  • 在 php 中为类自动生成 getter 和 setter 的最佳方法是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我经常创建一个包含一些私有变量的类 当设置此类的实例时 应该可以使用 getter 和 setter 填充该类的所有变量 有没有一种简单的方法可
  • 生成大随机数 php [重复]

    这个问题在这里已经有答案了 我想使用 PHP 生成一个包含 75 个字符的数字 我到处寻找 但一无所获 除了这个 http dailycoding com tools RandomNumber aspx http dailycoding c
  • FPDI/FPDF:水印和打印多页

    我修改了这个堆栈问题 当用户尝试下载文件时在 pdf 文件上应用水印 https stackoverflow com questions 3983432 applying watermarks on pdf files when users
  • 如何从父类函数访问子类中定义的常量?

    我从 php net 看到这个例子 但 c MY CONST 仅在 5 3
  • 将“php”作为 shell 脚本执行时的自定义 php.ini 文件

    我在跑php作为 shell 脚本 我不确定 shell脚本 是否正确 该文件以 usr bin php 这很好用 但 MongoDB 类没有正确加载php ini文件 具有extension mongo so 未使用 我该如何使用它tha
  • 是否可以使用 PHP 重定向发送 POST 数据?

    更新 这不是重复的如何使用 PHP 发送 POST 请求 https stackoverflow com questions 5647461 how do i send a post request with php 那里的解决方案对我不起
  • 从 smarty 访问 PHP 文件的变量(本地或全局)

    我有一个 php 文件 其中包含一些本地和全局变量 例如 foo 从此文件中调用 smarty 对象 如何在不更改 PHP 文件的情况下从 smarty 脚本访问 foo Thanks 如果你有一个名为 BASE 的常量变量 并且定义如下
  • 为什么我需要结束 ob_start()?

    php 文档建议我应该用 ob end flush 结束每个 ob start 我在网站的每个页面上使用一个 只是为了允许我在应用程序中的任何位置使用 firephp 日志方法 该应用程序运行良好 但我想知道是否有任何我不知道的东西可能有害
  • “使用未定义常量”注意,但该常量应该被定义

    共有三个文件 common php controller php 和 user php 文件 common php 如下所示 文件controller php看起来像 文件 user php 如下所示 执行脚本时 会给出通知 注意 使用未定
  • PHP 在输入流中使用 fwrite 和 fread

    我正在寻找将 PHP 输入流的内容写入磁盘的最有效方法 而不使用授予 PHP 脚本的大量内存 例如 如果可以上传的最大文件大小为 1 GB 但 PHP 只有 32 MB 内存 define MAX FILE LEN 1073741824 1
  • PHP 脚本可以在终端中运行,但不能在浏览器中运行

    我正在尝试执行exec命令 但我遇到了问题 当我运行以下代码时 当我通过浏览器运行它时它不起作用 但如果我把输出 str将其复制并粘贴到终端中 它工作得很好 造成这种情况的原因是什么 我该如何解决 目前我正在运行localhost php
  • 在 apache docker 容器中运行虚拟主机

    我在同一个 apache 容器中有两个 php 应用程序 我试图在端口上运行其中一个应用程序 因为它需要通过根域而不是子文件夹进行访问 我想在端口 8060 上运行应用程序 我尝试使用 apache 虚拟主机执行此操作 但它不会加载页面 h
  • 使用 Ajax.Request 将 JSON 从浏览器传递到 PHP 的最佳方法

    您好 我有一个 JSON 对象 它是一个二维数组 我需要使用 Ajax Request 将其传递给 PHP 我知道的唯一方法 现在我使用js函数手动序列化我的数组 并获取以下格式的数据 s 1 d 3 4等 我的问题是 有没有办法更直接 有
  • 表单提交后如何保留选择字段中的选定值?

    我有一个用于将票证上传到数据库的主页 我有一个选择字段 我想保留用户在提交表单之前选择的值 但它没有发生 这是我选择字段的代码
  • 使用正则表达式提取两个短语之间的所有单词[重复]

    这个问题在这里已经有答案了 我正在尝试使用以下正则表达式提取两个短语之间的所有单词 b item W w W 0 2 1 one W w W 0 3 business b b item W w W 0 2 3 three W w W 0 3
  • 无法显示 Laravel 欢迎页面

    我的服务器位于 DigitalOcean 云上 我正在使用 Ubuntu 和 Apache Web 服务器 我的家用计算机运行的是 Windows 7 我使用 putty 作为终端 遵循所有指示https laracasts com ser

随机推荐

  • 入门知识(一)矢量图与位图的区别

    矢量图与位图有什么区别 转自https jingyan baidu com article 54b6b9c0dbef682d583b4722 html 分步阅读 前几日有同事总是不时的问我什么是矢量图什么是位图及它们之间有什么区别 今天咱们
  • 打印1-100中3的倍数 (C语言)

    代码 include
  • MySQL安装时出现无法正常启动的问题

    我刚在官网下载了MySQL8 0 18的最新压缩包版本 跟着网络上的安装教程走 发现在cmd窗口用net start mysql命令无法正常启动 在查看my ini文件和环境变量配置没有问题之后 重新以管理员身份打开cmd窗口 仍然失败 百
  • LeetCode 2011. 执行操作后的变量值

    存在一种仅支持 4 种操作和 1 个变量 X 的编程语言 X 和 X 使变量 X 的值 加 1 X 和 X 使变量 X 的值 减 1 最初 X 的值是 0 给你一个字符串数组 operations 这是由操作组成的一个列表 返回执行所有操作
  • python--socket(套接字/插口)

    socket是什么 是进程间通信的一种方式 它与其他进程间通信的一个主要不同是 它能实现不同主机之间的进程通信 我们网络上各种各样的服务大多都是基于socket来完成通信的 例如我们浏览网页 qq聊天 收发emil Socket是应用层与T
  • 民营经济挑战未来发展

    上周末 一场 中国民营经济六十年研讨会 在北京聚集了改革领域的多位高官和专家 曲折和成就 经验和教训 理论问题和现实问题 都在会议上碰撞 此次会议由中央社会主义学院 中国经济体制改革研究会 中国民 私 营经济研究会 北京开达经济学家咨询中心
  • 创建git项目并提交

    1 创建仓库 2 点击创建 3复制gitee码云的HttpS连接 4 提交上传 打开项目并点击菜单栏上的 CVS Import into version control Create Git Repository 创建本地仓库 在打开的 C
  • 小米笔记本Pro安装Win+Mac双系统,时间同步不一致问题!

    安装win和Mac 双系统 时间同步不一样的问题 可以通过补丁解决 Win注册表CMD注入或Mac下安装注入 二选一打补丁 1 Win下操作以管理员运行CMD命令行Reg add HKLM SYSTEM CurrentControlSet
  • 基于时空网络的出租车OD需求预测-简介

    最近单曲循环的一首歌 分享给大家 1 文章信息 Contextualized Spatial Temporal Network for Taxi rigin Destination Demand Prediction 2019发在IEEE
  • RecyclerView应用复习

    导包 implementation androidx recyclerview recyclerview 1 1 0 recyclerview implementation com zhy base rvadapter 3 0 3 adap
  • AttributeError: module ‘torch.cuda.amp‘ has no attribute ‘autocast‘

    参考 https zhuanlan zhihu com p 165152789 https zhuanlan zhihu com p 176998729 https pytorch org docs stable amp html http
  • 渠道系统和 OA系统待办事项接口

    OA待办 已办 以及通过ltpatoken查找用户拼音接口 接口采用http get方式 将需要的参数传入 Content Type application json charset UTF 8 getMethod addRequestHe
  • 错误: 无法从静态上下文中引用非静态 变量 this

    JAVA菜鸟笔记 错误 无法从静态上下文中引用非静态 变量 this 1 09 17 Hello java 错误 无法从静态上下文中引用非静态 变量 this 错误原因 main方法是一个静态方法 而静态方法中无法引用非静态变量 因为静态方
  • STC单片机 延时 那点事,DS18B20的苦

    DS18B20采用 一线总线 对时序的要求是特高啊 要想精准延时 有两个选择 其一当属定时器 其二用汇编一条一条的来算 但 DS18B20延时的时候 以上两条都不会选 还有其他选择 第三方的Delay函数 比如STC ISP VXX X提供
  • 惊艳的时间轮定时器

    问题引入 游戏里面每个Player身上有很多buffs 在每一个tick 最小时间段 都要去检查buff里面的每一个buff是不是过期 产生的效果如何 造成在每个tick里面都去遍历一个长list 明显很不好 怎么优化 1 原始模型 buf
  • c++智能指针

    C 智能指针详解 C 有四个智能指针 auto ptr unique ptr shared ptr weak ptr 其中后三个是C 11支持 第一个已经被C 11弃用 智能指针介绍 智能指针主要用于管理在堆上分配的内存 它将普通的指针封装
  • IP子网划分

    一 子网划分基础 需要掌握二进制与十进制之间的熟练转化 第一篇已经详细介绍过 二 IP地址组成及其分类 目前的IP地址是 IPv4 地址 1 IP地址有两部分组成 网络号码字段 net id 用于区分不同网络 主机号码字段 host id
  • HarmonyOS基础答疑

    本帖收录 HarmonyOS开发者交流群 常见的问题答疑 另外有相关问题可以补充到本帖 Q1 如何获取DevEco Studio 2 0 版本计划 获取方式 答 现在起 可在HarmonyOS官网上 下载HarmonyOS应用开发IDE D
  • 如何让PowerShell显示中文不乱码

    如今软件日益国际化的今天 Windows下的命令行却还顽固地使用本地编码来显示数据 这导致用UTF 8编码的文件在命令行显示乱码 虽说Cygwin的内核cygwin1 dll有自动转换功能 可是因为GB2312中没有变音符号等特殊字符 某些
  • CGI的基本定义和优劣势是什么

    通用网关接口 CGI 是网络服务器之间的交集 通过它可以在外部应用程序和服务器之间进行标准化数据交换 它属于现存最古老的在线界面技术 至今仍被一些知名虚拟主机提供商使用 使用CGI 时 HTML页面不需要存储在服务器上 而是可以在用户进行网