在正式开发之前,先了解一下网站的原理:
请求,处理,响应
在浏览器的network中可以看到浏览器和服务器的交互过程。
请求一个网站的本质就是咱们的浏览器和服务器交互的一个过程。
比如说咱们请求www.baidu.com,就是咱们的浏览器向服务器发送一个请求,我要请求www.baidu.com
服务器给咱们返回一个消息Response。浏览器向服务器发送请求,服务器吧咱们所请求的内容返回来。
开发动态网站需要什么
密码明文传输是容易被劫持 参考网络原理
开发一个网站需要什么
需要一台web服务器,帮助开发者实现网路请求处理等。
如果不使用web网站服务器,需要我们自己来写socket/多线程 相当于自己做一个web服务器。
需要开发者开发服务器端程序,CGI。进行用户业务逻辑的处理。浏览器根据用户的操作向web服务器发送请求,web服务器的程序对浏览器的请求进行处理,然后把处理的结果响应给客户端。
CGI
什么是CGI?
当浏览器的一个请求到来的时候,web服务器运行服务服务器端对应的可执行程序,把浏览器的请求放到标准化输入中,可执行程序运行后,web服务器把程序的标准化输出,内容返回给浏览器。
CGI开发效率,运行效率低,但是开发原理和java,asp.net,php等是互通的,所以不用纠结cgi是过时的技术,在嵌入式设备中cgi还是应用很广的。
开发CGI流程:开发一个exe程序,放到web服务器对应目录下,浏览器访问这个exe即可运行。
运行CGI需要网站服务器。
通过scanf就可以读取到客户端的请求,通过printf返回给客户端。
现在我们可以开发第一个cgi程序
vs中新建,选择visual c++-》win32项目 选择控制台,在源文件上右键添加新建项c++,文件名后缀用.c
#include
int main()
{
printf("Content-Type:text/html;charset=gbk\r\n\r\n");
printf("hello world");
return 0;
}
生成的exe文件改名为cgi放到网站根目录下,浏览器访问,返回输出。分析原理:浏览器请求cgi服务器,后台执行cgi程序,并且把执行结果返回给浏览器。
简化开发配置:
每次修改代码都要生成,exe改为cgi,复制到网站的根目录。很麻烦。
直接生成cgi:项目右键属性目标文件扩展名“”改为.cgi
项目根目录作为网站根目录:改apache的http.conf的documentroot
cgi直接生成到网站根目录,也就是项目根目录,项目右键属性,输出目录田"./"
获取请求参数:
有的程序运行之前需要给出一些参数,网站程序不能直接从标准输入scanf,需要通过地址栏中QueryString传入
用getenv从环境变量中获取QueryString:char*queryString=getenv("QUERY_STRING);
报错
解决方案:
https://jingyan.baidu.com/article/49711c616b8a1ffa441b7cdc.html