一
https://www.csdn.net/
在浏览器里输入网址后按回车就是向服务器的一次请求
网址就是URL,统一资源标记符
浏览器的功能不止有访问Web服务器,还可以访问FTP服务器和发送邮件等
浏览器是一个具有多种客户端功能的综合性客户端软件
访问Web时网址前面使用http(s)开头
访问FTP时网站前面使用ftp开头
访问邮件服务器时使用mailto开头
访问不同的内容要使用不同的网址格式:
二
输入网址按下回车之后,浏览器随机做出解析网址的动作。
根据前面不同的网址格式,浏览器能够获得网址中携带的信息。
(如果网址最后以“/"结尾那么就代表该请求是在请求默认文件,一般是服务器那边已经约定好了,默认文件一般是index.html或者default.html
如果网址最后连 “/”都没有了,那这里到底是在请求文件还是文件夹,是需要到服务器那边根据具体情况而定的)
三
解析到必要的信息之后就要用这些信息去请求服务器,这里必要的信息内容包含:“对什么”和“进行怎样的操作”两个部分
(这里解析到必要信息之后还会按照严格的格式去打包数据,后面详细说)
对什么
其中相当于“对什么”的部分被称为URI
这个URI指定的就是服务器中的一个存放网页数据的文件名或者一个CGI程序
也可以直接使用URL进行访问
这里可以写各种访问目标,而这些访问目标统称为URI。
进行怎样的操作
这里的操作也被称为方法,用于告诉Web服务器完成怎样的工作,包括:
读取URI表示的数据
将客户端输入的数据发送给URI表示的程序
等…
HTTP消息中其实还会附带头字段,客户端向服务器发送数据时会先发送头字段然后再发送数据。(后面再详细说)
四
HTTP消息被发送到服务器之后,服务器会根据“对什么”和“进行怎样的操作”来要求自己做出相应的处理,然后将结果的状态(状态码)以及反馈的数据一起打包作为响应消息发送给客户端。
客户端通过结果的状态(状态码)判断响应的结果,然后将数据显示在屏幕上
这就是HTTP的整个过程
五
GET方法: 主要是请求数据
POST方法:需要填写表单再访问,这种请求到达服务器后会把用户填写的表单数据交给应用程序和脚本
PUT方法和DELETE方法:分别是用于修改和删除服务器上指定的文件,用的很少
填坑:前面说的HTTP消息格式和请求头
前面说HTTP消息的构造有严格的格式,这种消息体的格式通过消息头的Content-Type字段来指定
下面图片详细的说明了HTTP消息的具体格式,
要补充的是,请求行中的方法具体用什么要根据请求动作发生场景来决定
输入网址按回车? 一般用GET
点击网页中的超链接? 一般用GET
填写信息后按提交按钮?一般用POST 也可能用GET
接下来就是HTTP消息构造的细节
请求消息
<方法> 按上面说的,分场景
用户指定的URL中提取出来
版本 表示该消息是基于哪个版本的HTTP规格编写的
消息头:很多项目,如日期、客户端支持的数据类型、语言、压缩格式、客户端和服务器的软件名称和版本、数据有效期和最后更新时间等
空行:
最后是消息体
响应消息
基本和请求消息相同,差别只在第一行上。
第一行的内容变为状态码和响应短语