欢迎光临散文网 会员登陆 & 注册

【re:从零开始的网站搭建教程】#2-请求数据的获取

2021-09-13 21:30 作者:星与闇之痕  | 我要投稿

先来看一看更具体的一个http请求的结构

http结构

#http头、http体

http头里一般的是通信所需的默认数据,而http体里是我们真正想要发送的数据。http头有固定明确的格式,http的数据则是我们自己选择的数据,格式不固定。简单的区分就是http的第一个空行前是头,空行后是体。

由浏览器发给服务器的叫请求头,反之则叫响应头。

#请求模式

从图中可以看出浏览器发送的请求中的第一行是GET / HTTP/1.1,其中GET是请求的模式,除了GET以外还有POST,PUT,DELET等等。如果你学过数据库你可以把GET、POST、PUT、DELET分别理解为数据库操作的查、改、增、删这些操作。在http中没有这么严格,你可以根据情况任意选择模式。GET和POST请求已经足够完成所有事情,我们目前就只需要研究GET和POST就够了。

1.GET

GET请求一般用于请求页面,有大小限制。限制多少根据浏览器和服务器不同而不同,不要超过2kb为佳。GET的数据一般在http头中,不建议用GET来传输大量数据和敏感数据。

2.POST

POST请求一般用于提交数据,无大小限制。不过在某些服务器中为了性能会限制大小,但POST本身是没有大小限制的。POST的数据一般在http体中,传输大量数据使用POST。

#HTTP头项目简析

一、请求头

1.GET / HTTP/1.1

GET / HTTP/1.1是请求头的第一行,也是最重要的一行。

其中第一个为请求模式,这里是GET请求;第二个为目录,是在域名后跟的用/划分的一串,只有一个斜杠表示网站的根目录,假如说访问的不是index这个目录的话那就是/index,整个第一行也就变成GET /index HTTP/1.1;最后的HTTP/1.1表示当前http协议的版本。

2.Cookie

这也是相当重要的一行,保持登录状态、验证用户身份需要靠它。

3.Range

这个没有前两个重要,在视频播放、断点续传会用到。

二、响应头

HTTP/1.1 200 OK

HTTP/1.1表示当前http协议的版本;200表示响应码;OK是响应信息。

(1)响应码

常用的有:

1开头表示需要做出一些改变

HTTP/1.1 101 Switching Protocols (切换协议)

2开头表示服务器收到并且成功解析、执行数据

HTTP/1.1 200 OK (成功)

HTTP/1.1 205 Reset Content (成功,但不用刷新页面)

HTTP/1.1 206 Partial Content (成功,数据为追加的数据)

4开头表示用户发送的数据存在问题,和服务器无关

HTTP/1.1 400 Bad Request (失败,http请求格式错误)

HTTP/1.1 404 Not Found (失败,所请求的文件和页面不存在)

HTTP/1.1 405 Method Not Allowed (失败,不支持的请求模式)

HTTP/1.1 414 Request-URI Too Large (失败,请求太庞大)

5开头表示服务器出现问题

HTTP/1.1 500 Internal Server Error (错误,服务器内部错误)

2.Server

不是必要项目,是服务器程序的名字。

3.content-type

这一项规定了文件的格式和浏览器解析时的文本编码,若没有正确设置浏览器则无法正确渲染页面,并且可能出现乱码。

#编写程序接收浏览器的请求数据

启动刚刚编写的文件,打开浏览器,地址栏输入127.0.0.1,看到打印了这个

不太好看,手动格式化一下

发现每一行最后都是\r\n,最后一个空行也有\r\n。在编程语言中往往用\r表示回车\n表示换行,虽然直接\n就能换行,但\r\n才时一个标准的换行。

所以在python中区分请求头是否结束就找有没有出现\r\n\r\n就行了。

修改一下刚刚的代码就可以截取请求头了

不过于后面没有更多的数据,看不出太多效果。

【re:从零开始的网站搭建教程】#2-请求数据的获取的评论 (共 条)

分享到微博请遵守国家法律