HTTP协议

1.HTTP 协议

  HTTP(Hypertext Transfer Protocol)协议是一种应用层的协议,它是因特网上应用最为广泛的协议之一。HTTP 协议主要用于 Web 应用中,它建立在 TCP/IP 协议之上,使用分层的设计模式。

  在 TCP/IP 分层模型中,HTTP 协议属于应用层,在传输层使用 TCP 协议提供可靠的数据传输服务。HTTP 协议由请求和响应两部分组成,客户端发送 HTTP 请求到服务器,并接收服务器返回的 HTTP 响应。

  HTTP 是一个"一问一答”这种形式的协议,一个请求对应一个响应

在这里插入图片描述

2. HTTP请求报文

  HTTP请求报文由四部分组成:

  1.请求行(首行),包含了三部分:
  (1)HTTP的方法:描述了这个 HTTP 请求,想干啥。  
  (2)URL:描述要访问的网络资源的具体位置。
  (3)版本号:表示HTTP的版本。

  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中查看请求信息和响应信息。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值