HTTP请求详解(1)——生成HTTP请求信息

一. 概述

从整体来看,http请求的整个过程就是客户端和服务器之间的信息交互,如下图所示。
http请求的抽象层面
其中用户端输入URL,然后浏览器将其解析为请求信息发送给服务器。服务器收到请求信息,根据请求的内容返回信息给到浏览器,浏览器再将信息进行解析,展示在界面上,使得用户可以直观查看。这就是客户端与服务器端的直观交互过程。

URL: United Resource Locator,统一资源定位符
简单来说,就是浏览器中http://开头的那串字符,俗称“网址”
不过URL除了http://开头的网址,还包括以其他字符开头的网址,如ftp:,https:等
根据访问的目标服务器不同,网址所使用的协议(也就是http,ftp)也会有所不同

下面我们将这个交互过程进行进一步的分解。

这篇主要讲的是生成HTTP请求信息。

二. URL的解析

浏览器解析第一步:网址的解析
在这里插入图片描述

如上图所示,解析后的部分有:协议名、字符串//、web服务器名和数据源路径名。

三. HTTP协议发送请求信息

之后的一步就是浏览器使用HTTP协议访问Web服务器,不过在此之前先来了解一下HTTP协议。

3.1 HTTP协议

在这里插入图片描述
HTTP协议的任务就是定义客户端与服务器端之间交互的信息内容步骤

其中交互的信息包括

  • 请求信息
  • 返回信息

3.1.1 请求信息

HTTP请求信息主要包括两个部分,概述来说分别是

  • 目标
  • 操作

访问的目标:也称URI,指服务器中的文件名,如图2中的"dir1/file1.html",也可以将URL作为URI。

URI:Uniform Resource Identifier,统一资源标识符
URI的内容是一个存放网页数据的文件名或者CGI程序的文件名

CGI:Common Gateway Interface,公共网关接口
CGI 应用程序能与浏览器进行交互,还可通过数据API与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。格式化为HTML文档后,发送给浏览器,也可以将从浏览器获得的数据放到数据库中。(百度百科

访问的操作:也称方法,表示需要Web服务器完成怎样的操作,例如比较常用的GET(从服务器中获取数据)、POST(发送数据到服务器中去)。
在这里插入图片描述

下面为HTTP的主要方法列表

方法含义
GET获取 URI 指定的信息。如果 URI 指定的是文件,则返回文件的内容;如果 URI 指定的是 CGI 程序,则返回该程序的输出数据
POST从客户端向服务器发送数据。一般用于发送表单中填写的数据等情况下
HEAD和 GET 基本相同。不过它只返回 HTTP 的消息头(message header),而并不返回数据的内容。用于获取文件最后更新时间等属性信息
OPTIONS用于通知或查询通信选项
PUT替换 URI 指定的服务器上的文件。如果 URI 指定的文件不存在,则创建该文件
DELETE删除 URI 指定的服务器上的文件

其中get和post属于HTTP的典型方法,除此之外,其他的方法在互联网中几乎见不到使用的例子。

3.1.2 返回信息

返回信息是Web服务器处理完客户端发来的请求信息,完成自己的工作,返回给客户端的信息。其中包括的重点内容为:

  • 状态码——用来表示操作的结果是否成功
  • 头字段
  • 网页数据

3.2 访问Web服务器

格式要求:HTTP消息在格式上也有严格的要求,因此浏览器会按照规定的格式生成请求/返回信息。
在这里插入图片描述
在请求信息中,第一行为主要信息,其中包含了方法和URI,以及HTTP的版本。第二行开始的消息头,主要是额外的描述信息,其中包括日期、客户端支持的数据类型、语言、压缩格式、数据有效期、最后更新时间等。消息头中的内容随着浏览器的类型、版本号、设置等的不同而不同。消息头结束后,是一个空行,然后写需要发送的数据,即消息体(在get方法下,不需要填写任何的数据)

在响应信息中,和请求信息最大的差别就是第一行的内容。响应信息的第一行内容为状态吗和响应短语,用来说明执行的结果。下表为状态码的概要。

状态码描述信息
1xx告知请求的处理进度和情况
2xx成功
3xx表示需要进一步操作
4xx客户端错误
5xx服务器错误

在HTTP访问的时候,特别要注意的一点是,在访问包含图片的网页中,图片也是一个URI。由于每条请求是只能写一个URI的,所以每次只能获取一个文件,如果还想要获取多个文件,需要对每个文件都发送一次请求。所以在访问包含图片的网页中,需要不止一个请求访问web服务器。比如一个网页包含3张图片,那么获取网页加上获取图片,一共需要4次请求。

参考:
《网络是怎样连接的》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值