目录
1.HTTP 协议
HTTP(Hypertext Transfer Protocol)协议是一种应用层的协议,它是因特网上应用最为广泛的协议之一。HTTP 协议主要用于 Web 应用中,它建立在 TCP/IP 协议之上,使用分层的设计模式。
在 TCP/IP 分层模型中,HTTP 协议属于应用层,在传输层使用 TCP 协议提供可靠的数据传输服务。HTTP 协议由请求和响应两部分组成,客户端发送 HTTP 请求到服务器,并接收服务器返回的 HTTP 响应。
HTTP 是一个"一问一答”这种形式的协议,一个请求对应一个响应
2. HTTP请求报文
HTTP请求报文由四部分组成: 1.请求行(首行),包含了三部分: 2.请求头(header):其中包含了很多行,每一行都是一个键值对,键和值之间使用冒号和空格来进行分割,并且键值对的个数也是不固定的,不同的键和值表示的含义也是不同的。 3.空行:相当于请求头的结束标记,类似于链表中的null。 4.请求正文(body)空行后面的内容.有的时候可以没有。 |
首行
请求头
空行
正文内容为空
3.HTTP响应报文
HTTP响应报文由四部分组成: 1.首行,包含了三部分:包含了三个部分:版本号、状态码以及对状态码的描述。 2.响应头(header):也是键值对结构,每个键值对独占一行,每个键和值之间使用冒号和空格进行分割,不同的键值对表示不同的含义。 3.空行:表示响应头的结束标记。 4.响应正文(body):表示服务器端给客户端返回的具体的数据。 |
首行
响应头
空行
正文
4.HTTP请求详细内容
url:网络上唯一资源的地址符,俗称统一资源定位符。 url的具体格式的基本模板如图: 1.协议方案名:描述了当前的URL是给那个协议来使用的,例如:http://和https://都是给HTTP协议来使用的。 2.登录认证信息:用来体现用户名和密码。 3.服务器地址:表示当前要访问的主机,此处可以是IP或者域名。 4.服务器端口号:表示当前要访问的是主机上的哪一个应用程序。 5.带层次的文件路径:表示当前要访问的服务器的资源。 6.查询字符串:表示浏览器或或者客户端给服务器端传递的自定义的一些信息,对于获取到的资源提出了更高的要求。此部分是程序员自己定义的。 7.片段标识符:表示当前要访问的是html页面中具体的子部分,能够控制浏览器滚动到相关位置。 |
常用的是GET方法和POST方法。 那么这两个方法又什么区别呢? 1.从语义上来讲,GET通常是用于获取数据,POST用于上传数据。 2.通常情况下,GET方法中没有body部分,是利用query string 来向服务器传递数据的,POST方法直接利用body部分来传递数据。 3.通常情况下,GET方法是幂等的,POST方法是不幂等的。幂等:每次相同的输入得到的输出结果是确定的。不幂等:每次相同的输入得到的输出结果是不确定的,如果输入一定,得到的输出也一定,这种情况就可以认为是幂等的 4.通常情况下,GET方法是可以被缓存的,POST方法是不可以被缓存的。 5.GET方法是可以被浏览器收藏,POST方法是不能的。 |
4.header中的键值对
1.HOST:域名,用于指定要访问的服务器的主机名或IP地址。 2.Content-Length:表示body中的数据长度。 3.Content-Type:表示body中的数据格式。 4.User-Agent(UA):表示操作系统信息和浏览器信息。 5.Referer:表示当前页面是从哪个页面跳转过来的 6.Cookie:浏览器给页面提供的能够持久化存储数据的机制,这种机制并不会因为程序重启而造成数据丢失。Cookie是按照域名来组织数据的。存储的是会话id。 7.Session:存储会话信息。 |
5.HTTP状态码
常见的状态码: 1.200:ok,表示资源返回成功 2.404:Not Found,表示要访问的资源不存在。 3.403:Forbidden,资源存在但是无权限访问。 4.405:Method Not Allowed,对方服务器不支持用户所用的一些方法。比如使用get请求,我使用了post请求 5.500:Internet Server Error,服务器出错。 6.504:Gateway Timeout,服务器繁忙。 |
6. 构造HTTP请求
6.1 基于form表单
<form action="https://www.sogou.com" method="get">
<input type="text" name="user"><br/>
<input type="password" name="pwd"><br/>
<input type="submit" value="提交">
</form>
6.2 基于ajax
7. Fiddler使用
打开Fiddler,浏览器输入www.baidu.com,查看Fiddler的请求,一般可以看蓝色的,如下图所示,返回的类型是text/html,可以在Raw中查看请求信息和响应信息。