【Python学习】Python学习22- CGI编程

news/2025/2/20 18:45:16

主图==========

目录

【Python学习】Python学习22- CGI编程

  • 前言
  • CGI工作流程
  • Web 服务器支持及配置
  • Http头部
  • 参考


文章所属专区 Python学习


前言

本章节主要说明Python的CGI接口
CGI 目前由 NCSA 维护,NCSA 定义 CGI 如下:
CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP 服务器,提供同客户端 HTML 页面的接口。

CGI工作流程

1、使用你的浏览器访问 URL 并连接到 HTTP web 服务器。
2、Web 服务器接收到请求信息后会解析 URL,并查找访问的文件在服务器上是否存在,如果存在返回文件的内容,否则返回错误信息。
3、浏览器从服务器上接收信息,并显示接收的文件或者错误信息。

Web 服务器支持及配置

Apache 支持 CGI 配置:
设置好CGI目录:
所有的HTTP服务器执行 CGI 程序都保存在一个预先配置的目录。这个目录被称为 CGI 目录,并按照惯例,它被命名为 /var/www/cgi-bin 目录。

CGI 文件的扩展名为 .cgi,python 也可以使用 .py 扩展名。

默认情况下,Linux 服务器配置运行的 cgi-bin 目录中为 /var/www。

如果你想指定其他运行 CGI 脚本的目录,可以修改 httpd.conf 配置文件,如下所示:

<Directory "/var/www/cgi-bin">
   AllowOverride None
   Options +ExecCGI
   Order allow,deny
   Allow from all
</Directory>

在 AddHandler 中添加 .py 后缀,这样我们就可以访问 .py 结尾的 python 脚本文件:

AddHandler cgi-script .cgi .pl .py

这个的hello.py脚本是一个简单的Python脚本,脚本第一行的输出内容"Content-type:text/html"发送到浏览器并告知浏览器显示的内容类型为"text/html"。

用 print 输出一个空行用于告诉服务器结束头部信息。

Http头部

hello.py文件内容中的" Content-type:text/html"即为HTTP头部的一部分,它会发送给浏览器告诉浏览器文件的内容类型。

HTTP头部的格式如下:

HTTP 字段名: 字段内容

实例:
Content-type: text/html
在这里插入图片描述

参考

菜鸟教程-Python

给个三连吧 谢谢谢谢谢谢了
在这里插入图片描述


http://www.niftyadmin.cn/n/5338367.html

相关文章

HTTP | 常用的 14 个 HTTP 状态码

Hi&#xff0c;大家好&#xff0c;我是源于花海。本文主要了解常用的 14 个 HTTP 状态码。当浏览者访问一个网页时&#xff0c;浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前&#xff0c;此网页所在的服务器会返回一个包含 HTTP 状态码的信息头&#xf…

(循环依赖问题)学习spring的第九天

Bean实例的属性填充 Spring在属性注入时 , 分为如下几种情况 : 注入单向对象引用 : 如usersevice里注入userdao , userdao里没有注入其他属性 注入双向对象引用 : 如usersevice里注入userdao , userdao也注入usersevice属性 二 . 着重看循环依赖问题 (搞清原理即可) 问题提出…

MyBatis处理LIKE查询时,如何将传值中包含下划线_和百分号%等特殊字符处理成普通字符而不是SQL的单字符通配符

MySQL中&#xff0c;_和%在LIKE模糊匹配中有特殊的含义&#xff1a; 下划线 _ 在LIKE模糊匹配中表示匹配任意单个字符。百分号 % 在LIKE模糊匹配中表示匹配任意多个字符&#xff08;包括零个字符&#xff09; 如果这种字符不经过处理&#xff0c;并且你的模糊查询sql语句书写…

Django REST Framework入门之序列化器

文章目录 一、概述二、安装三、序列化与反序列化介绍四、之前常用三种序列化方式jsonDjango内置Serializers模块Django内置JsonResponse模块 五、DRF序列化器序列化器工作流程序列化&#xff08;读数据&#xff09;反序列化&#xff08;写数据&#xff09; 序列化器常用方法与属…

react 页签(自行封装)

思路&#xff1a;封装一个页签组件&#xff0c;包裹页面组件&#xff0c;页面渲染之后把数据缓存到全局状态实现页面缓存。 浏览本博客之前先看一下我的博客实现的功能是否满足需求&#xff0c;实现功能&#xff1a; - 页面缓存 - 关闭当前页 - 鼠标右键>关闭当前 - 鼠标右…

C++中的指针、引用和数组

参考文档&#xff1a;《21天学通C&#xff08;第8版&#xff09;》 C中对于指针、引用和数组使用时&#xff0c;充斥着 * 、& 、[]符号&#xff0c;对于像我这样的初学者面对这些符号难免会陷入混乱。 当然&#xff0c;C中对符号 * 、& 、[] 赋予了多重意义也是让人容易…

Stable Diffusion中的Embeddings

什么是Embeddings&#xff1f; Embeddings是一种数学技术&#xff0c;它允许我们将复杂的数据&#xff08;如文本或图像&#xff09;转换为数值向量。这些向量是高维空间中的点&#xff0c;可以捕捉数据的关键特征和属性。在文本处理中&#xff0c;例如&#xff0c;embeddings可…

CentOS 7路由管理解析:探秘路由表的奥秘

前言 探索CentOS 7系统中网络的奥秘&#xff0c;这里为读者小伙伴带来了一篇关于路由管理的技术文章。从深入理解路由表的基础知识&#xff0c;到掌握在CentOS 7系统中如何高效管理路由&#xff0c;这篇文章将为你揭示网络数据包的传输秘密。无论你是初学者还是有经验的用户&a…