【Python】|廖雪峰官网学习笔记-HTTP简介

Web 开发—HTTP协议简介

HTTP协议

HTML是一种用来定义网页的文本,HTTP是在网络上传输HTML的协议,用于浏览器和服务器的通信。

在浏览器的开发者工具中(需要chrome内核的浏览器才行,我用的QQ浏览器)Elements显示网页的结构,Network显示浏览器和服务器的通信。…(详细见廖雪峰Python教程)

找到 Request Headers 这里显示浏览器发送给目标服务器的请求。将最主要的前两行进行分析:

GET / HTTP / 1.1

GET表示一个读取请求,将从服务器获得网页数据,/表示URL的路径,URL总是以/开头,/就表示首页。最后的HTTP/1.1指示采用的HTTP协议版本是1.1。
从第二行开始,每一行都是Xxx: dfsahalk的结构:

Host: www.baidu.com

表示请求的域名是www.baidu.com
往下找到Response Headers,这里显示服务器返回的原始响应数据:

Response Headers 和 Request Headers

HTTP响应分为Header和Body两部分,将比较重要的几行进行分析:

200 OK

200表示一个成功的响应,后面的OK是说明。常见的失败响应:404 NOT FOUND(网页不存在),500 Internal Sever Error(服务器内部出错)

Content-Type: text/html

Content-Type指示响应的内容,text/html表示HTML网页。


HTTP请求

··步奏··

  1. 浏览器首先向服务器发送HTTP请求。 包括:
    方法:GET还是POST,GET仅请求资源,POST会附带用户数据;
    路径:/full/url/path;
    域名:由Host头指定:Host: www.sina.com.cn
    以及其他相关的Header;
    如果是POST,那么请求还包括一个Body,包含用户数据。

  2. 服务器向浏览器返回HTTP响应。 包括:
    响应代码:200表示成功,3xx表示重定向,4xx表示客户端发送的请求有错误,5xx表示服务器端处理时发生了错误;
    响应类型:由Content-Type指定;
    以及其他相关的Header;
    通常服务器的HTTP响应会携带内容,也就是有一个Body,包含响应的内容,网页的HTML源码就在Body中。

  3. 如果浏览器还需要继续向服务器请求其他资源,比如图片,就再次发出HTTP请求,重复步骤1、2。


HTTP格式

一个HTTP包括Header和Body两部分,其中Body是可选的。
HTTP GET请求的格式

GET /path HTTP/1.1
Header1: Value1
Header2: Value2
Header3: Value3

每个Header一行一个,换行符是\r\n
HTTP POST请求的格式:

POST /path HTTP/1.1
Header1: Value1
Header2: Value2
Header3: Value3

body data goes here...

当遇到连续连个\r\n(\r\n\r\n)时,Header部分结束,后面的数据全部是Body。

HTTP响应的格式:

200 OK
Header1: Value1
Header2: Value2
Header3: Value3

body data goes here...

若HTTP响应包含body,也是通过\r\n\r\n来分隔的。

Body的数据类型由Content-Type头来确定,如果是网页,Body就是文本,如果是图片,Body就是图片的二进制数据。

当存在Content-Encoding时,Body数据是被压缩的,最常见的压缩方式是gzip,所以,看到Content-Encoding: gzip时,需要将Body数据先解压缩,才能得到真正的数据。压缩的目的在于减少Body的大小,加快网络传输。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值