当前位置: 首页 > news >正文

CGI脚本

注:本文大部分由AI生成,主要是梳理一下CGI,SickOs-1.1的shellshock有需要


CGI(Common Gateway Interface,通用网关接口)是一种标准协议,用于在 Web 服务器 和 外部程序 之间传递信息,实现动态网页生成。简单来说,CGI 脚本就是服务器端的程序,它根据用户请求生成动态内容并返回给浏览器。

CGI 脚本的特点

语言灵活:CGI 脚本可以用多种编程语言编写,如 Perl、Python、C、Shell 等,只要能处理输入输出即可。

运行模式:当浏览器发出请求时,Web 服务器调用 CGI 程序,程序处理请求(如读取表单数据、访问数据库),然后输出 HTML 或其他内容返回客户端。

标准接口:CGI 定义了标准输入(stdin)、标准输出(stdout)、环境变量等机制,让脚本可以获取请求信息并返回结果。

CGI 脚本的工作流程

浏览器发送 HTTP 请求(通常包含表单数据或 URL 参数)到 Web 服务器。

Web 服务器识别请求需要执行 CGI 脚本,并调用对应程序。

CGI 脚本从环境变量或标准输入获取请求数据。

脚本处理业务逻辑(查询数据库、文件操作等)。

脚本通过标准输出返回 HTTP 响应内容,包括头信息和 HTML 内容。

Web 服务器将 CGI 脚本的输出发送给浏览器,用户在浏览器上看到动态生成的网页。

简单示例(Python CGI脚本)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-print("Content-Type: text/html")  # HTTP头
print()  # 空行表示头部结束print("<html>")
print("<head><title>CGI示例</title></head>")
print("<body>")
print("<h1>Hello, CGI!</h1>")
print("</body></html>")

将这个脚本放在 Web 服务器指定的 CGI-bin 目录下并赋予可执行权限。

访问该脚本的 URL 就会生成动态页面,显示 “Hello, CGI!”。

本地简单搭建一个CGI

步骤一:安装和启动本地 HTTP 服务器

Python 自带 http.server 模块,支持 CGI。步骤如下:

在本地创建一个目录,例如 C:\mycgi 或 /Users/用户名/mycgi,作为 CGI 根目录

在该目录下创建一个子目录 cgi-bin 用于放置 CGI 脚本

打开终端或命令行,进入根目录,运行命令启动 CGI 支持的服务器:

python -m http.server 8000 --cgi

image

服务器启动后,可以访问 http://localhost:8000/cgi-bin/ 来调用脚本

步骤二:编写 CGI 脚本

在 cgi-bin 目录中创建 Python 脚本,例如 test.py

#!/usr/bin/env python3
# -*- coding: utf-8 -*-# 必须打印 HTTP 响应头部
print("Content-type: text/html")# 输出网页内容
print("<html><head><title>CGI Test</title></head>")
print("<body><h1>CGI 脚本运行成功!</h1></body></html>")

注意事项:
Linux/Unix 系统需要给脚本执行权限:

chmod +x cgi-bin/test.py

脚本文件必须放在 cgi-bin 子目录下

步骤三:访问 CGI 脚本

在浏览器中输入:

http://localhost:8000/cgi-bin/test.py

如果页面显示“CGI 脚本运行成功!”,说明 CGI 已经正常搭建并运行

image

总结

CGI 脚本是早期实现动态网页的重要技术,虽然如今多数网站使用更高效的框架(如 Flask、Django、Node.js 等)替代 CGI,但 CGI 的原理仍然是理解 Web 与服务器交互的重要基础。它的核心作用是 让静态网站变成动态网站,根据用户请求输出不同内容。

http://www.jsqmd.com/news/699130/

相关文章:

  • OCS Inventory NG Windows Agent:自动化资产盘点的核心原理与实战部署指南
  • AI搜索时代,深圳企业正在被“隐身”?深圳本地GEO优化公司推荐 - 品牌评测官
  • 多层感知机(MLP)神经网络入门与实践指南
  • TensorRT LLM AutoDeploy:大模型推理优化自动化实践
  • Java 动态库开发和调试(JNI 和 FFM)
  • Wan2.2-I2V-A14B部署教程:LDAP统一认证对接企业SSO系统
  • 广州市黄埔区鑫邦租赁:广州二手空压机回收服务商 - LYL仔仔
  • 不容易晒黑的防晒霜推荐,Leeyo防晒霜硬核抗晒远离暗沉变黑 - 全网最美
  • 温岭市大溪致翔机械设备租赁:靠谱的台州吊车租赁公司 - LYL仔仔
  • 从订单履约到会员增长:游戏电竞护航陪玩源码系统小程序全开源 v4.0 解决方案 - 壹软科技
  • 3大场景解析:如何用Path of Building彻底改变你的流放之路Build规划思维?
  • 3步搞定B站视频下载难题:BilibiliDown高效下载实战指南
  • 信息套利窗口倒计时:深圳本地GEO优化公司推荐与AI搜索卡位指南 - 品牌评测官
  • 太原龙盛腾达商贸:专业的太原格力空调出售公司 - LYL仔仔
  • 从写实到二次元:用Stable Diffusion打造你的专属AI画师,附保姆级模型搭配方案
  • 2026年深圳粤港两地牌租车公司推荐:中港跨境租车/深港跨境租车服务商精选 - 品牌推荐官
  • 潍坊悍龙机械设备:口碑好的杭州液压钻床出售公司 - LYL仔仔
  • 别再只会用PBR了!手把手教你用Matcap贴图快速制作风格化角色材质(附资源包)
  • 2026年3月石灰岩制造厂家哪个好,目前石灰岩精选国内优质品牌分析 - 品牌推荐师
  • 3步解锁CrossOver游戏兼容性:Mac游戏优化完整方案
  • 重庆雅田实业(集团):高新区古法自建房电话多少 - LYL仔仔
  • TMSpeech:Windows本地实时语音转文字工具,彻底告别云端隐私泄露
  • 安信可ESP32-CAM到手即用:5分钟快速验证硬件与基础功能(附常见启动失败排查)
  • 敏肌用什么防晒温和修护皮肤?Leeyo防晒霜修护维稳防晒养肤双在线 - 全网最美
  • TV Bro浏览器终极指南:在智能电视上享受完整上网体验的简单教程
  • 青岛佳讯通网络工程:青岛智慧工地安装哪家经验足 - LYL仔仔
  • 避开这些坑!用STM32CubeMX快速复现蓝桥杯G431电压监测赛题
  • 2026届最火的五大AI论文平台实测分析
  • 从Double到BigDecimal:一次支付金额计算Bug引发的Java精度问题排查实录
  • Python 协程池限速机制实现