web要想学的好,各种协议跑不了。
HTTP简介
平时web抓包等等操作都要用到,是互联网的基础协议,也是网页开发的必备知识。
它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。规定了请求以怎样的格式发出,响应以怎么样的格式收到。
HTTP特点
1、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。
2、灵活:HTTP允许传输任意类型的数据对象。
3.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
4.无状态:无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
5、支持B/S及C/S模式。
HTTP的请求头格式
主要分为以下三点:请求行、请求头部、请求数据。
使用Charles抓取的request:
GET /562f25980001b1b106000338.jpg HTTP/1.1
Host img.mukewang.com
User-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
Accept image/webp,image/*,*/*;q=0.8
Referer http://www.imooc.com/
Accept-Encoding gzip, deflate, sdch
Accept-Language zh-CN,zh;q=0.8
请求协议第一部分(请求行)
GET为请求类型,
/562f25980001b1b106000338.jpg为访问的资源
HTTP/1.1是当前的HTTP版本。
请求协议第二部分(请求头)
HOST将指出请求的目的地.
User-Agent代表浏览器的标识,请求头由客户端自行设定。
User-Agent: Mozilla/5.0 (compatible;域名)
含义:使用的用户代理是 Mozilla/5.0 (compatible; 域名)。
详解: User-Agent(用户代理),简称 UA,它是一个特殊字符串头,使 得服务器能够识别客户端使用的操作系统及版本、CPU 类型、浏览器及版 本、浏览器渲染引擎、浏览器语言、浏览器插件等。
Mozilla/5.0:Mozilla 是浏览器名,版本是 5.0;
Referer http://www.imooc.com/
当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。
Accept-Encoding: gzip, deflate, sdch
浏览器支持的压缩编码是 gzip 和 deflate, sdch。
Accept-Language: zh-cn,zh;q=0.5
Accept-Language:
表示浏览器所支持的语言类型;
zh-cn表示简体中文;zh 表示中文;
q是权重系数,范围 0 =< q <= 1,q 值越大,请求越倾向于获得其“;”之前的类型表示的内容,若没有指定 q 值,则默认为1,若被赋值为0,则用于提醒服务器哪些是浏览器不接受的内容类型。
请求协议第三部分(请求内容)
这里举例里边并没有请求内容,一般类似此类,经过了编码。不过看起来仍然比较清晰。
name=Professional%20Ajax&publisher=Wiley
HTTP响应格式
响应第一部分(状态行)
HTTP/1.1表明HTTP版本为1.1版本,状态码为200,状态消息为ok
响应第二部分消息报头
Date:生成响应的日期和时间;
Content-Type:指定了MIME类型的HTML(text/html),编码类型是UTF-8
响应第三部分(响应正文)
比较容易理解,一般为html
HTTP请求方法
常用的请求方法为GET以及POST。
GET直接在地址栏后输入即可,长短有限制。相对于post来说比较不安全,因为请求内容会直接显示出来。
GET
可被缓存
保留在浏览器历史记录中
可被收藏为书签
请求不应在处理敏感数据时使用
有长度限制
只应当用于取回数据
最重要的还有:方便!
文章参考链接:
https://blog.csdn.net/qq_38265137/article/details/93379922
https://blog.csdn.net/tomorrow13210073213/article/details/53036941