HTTP协议

目录

HTTP协议的概念

HTTP协议的工作过程

HTTP协议的格式 

请求格式

响应格式

HTTP协议中的方法 

GET和POST细节上的区别:

URL

URL的概念 

URL的格式 

URL定位到网上资源的步骤

HTTP中的报头(header) 

请求的正文格式

x-www.form-urlencoded

multipart/form-data

application/json

 响应的正文格式

text/html

text/css

javascript

json


HTTP协议的概念

HTTP协议又叫做超文本传输协议,它不仅可以传输文本,还可以传输js、css、html等格式的文件,是作为应用层使用最广的一种协议。

HTTP协议的工作过程

当我们在浏览器中输入一个网址时,浏览器会给服务器发送一个HTTP请求,服务器接收到请求以后,经过计算返回一个HTTP响应。

我们可以通过抓包工具 Fiddler 4来抓一下包,我们在抓取数据前先将Fiddler 4中的数据清空

,然后在浏览器中输入www.sogou.com,看一下抓包的结果。

然后找到对应的数据包,选择蓝色的数据包,然后根据提示点击响应的按钮

打开以后观察右侧的数据,上方表示HTTP请求中的数据,下方表示HTTP响应中的数据,为了观察可以用记事本打开。 

HTTP协议的格式 

HTTP中协议的格式要分为请求格式和响应格式

请求格式

1.首行(里面包括方法   URL    Http/版本号)

2.请求头(里面每一行是一个键值对,键和值之间使用冒号加空格来分隔,不同的键值表示不同的含义)

3.空行

4.请求正文(body)

响应格式

1.首行(Http/版本号     状态码     状态码的描述)

2.请求头(里面每一行是一个键值对,键和值之间使用冒号加空格来分隔,不同的键值表示不同的含义)

3.空行

4.响应正文(body)

HTTP协议中的方法 

HTTP协议里面的方法主要有以下几个:

GET、POST、PUT、DELETE等

GET表示获取网上的资源;

POST表示给服务器发送一个资源;

PUT表示传输文件;

DELETE表示删除文件;

上面的这些方法本质上没有区别,理论上可以相互替换 ,在HTTP请求中既可以用GET又可以用POST

GET和POST细节上的区别:

  • 语义不同:GET一般用于获取数据,POST一般用于提交数据;
  • GET的正文部分(body)一般为空,需要传递的数据通过query string传递,POST的body一般不为空,需要传递的数据通过body传递
  • GET请求一般是幂等的,而POST不是

URL

URL的概念 

URL:统一资源定位符,俗称网址,每一个互联网上的文件都有唯一的一个URL。

URL的格式 

根据一个具体的URL来说明URL的格式:

上面各个部分在URL中也是可以省略的,下面主要介绍重要的结构:

  • https:协议方案名,常见的有http和https其中http不安全,https安全(后面的博客会详细讲)
  • 端口号:端口号是用来指定访问服务器上那个进程的,如果在写URL中不写端口号的话,浏览器会根据协议类型来自动决定使用哪个端口号,在http协议中默认使用80端口,https协议默认使用443端口。
  • 查询字符串(query string):?后面 的字符串,它的本质是一个键值对。键值对之间使用&分隔,键和值之间使用=分隔。
  • 片段标识:片段标识主要用于页面内跳转。

URL定位到网上资源的步骤

  1. 先通过服务器地址,定位到一个具体的服务器
  2. 在通过端口号定位到一个具体的应用程序
  3. 在通过路径定位到这个应用程序管理的一个具体资源
  4. 再通过查询字符串对这个具体资源的要求做出进一步的解释
  5. 最后通过片段标识来确定定位到这个资源的那个部分

HTTP中的报头(header) 

这里将请求和响应的header一起讲:

1.Host:表示服务器主机的地址和端口号

2.Content-Length:表示body中的数据长度

3.Content-Type:请求的body中的数据格式,主要有以下几种——

x-www-form-urlencode(表单提交的数据格式) 、multipart/form-data(form表单提交的数据格式,通常提交图片/文件就会遇到这种格式)、application/json(数据为json的数据格式)、text/html(数据为html个格式)

4.Cookie:Cookie是浏览器提供的一种机制,是为了帮助浏览器能够让网页进行持久化保存数据的一种办法。

我们在登录网站的时候,第一次登录时所花的时间比后面几次登录的时间长,出现这样的原因就是应为浏览器他将我们的登陆信息保存在了Cookie中,下回登陆的时候很快就能登入。

我们可以打开浏览器,输入一个具有登陆功能的网址,点击输入框左侧的锁,点击Cookie。可以看到,里面包含了很多Cookie信息。 我们登陆进去,然后用抓包工具抓login包:

下面是清除Cookie之后的情况:

如果再次登陆的话请求header中又会存在gitee-session-n=.......这样的字符串,因为一旦登陆,浏览器就会自动添加Cookie。

请求的正文格式

x-www-form-urlencoded

当上传图片时正文会出现该类型的数据格式;

multipart/form-data

上传文件时正文会出现该类型的数据格式;

application/json

在登陆某些页面时,正文中会出现该类型的数据,向下面这样

 响应的正文格式

text/html

text/css

javascript

json

 HTTP响应中的状态和状态码

状态码表示访问一个页面的结果,常见的状态码如下:

200    OK 

表示访问成功

404     Not Found

表示访问的URL不存在

403     Forbidden

表示禁止访问

405     Method Not Allowed

表示服务器不支持请求中的方法

500     Internal Server Error

表示服务器崩溃

504     Gateway Timeout

请求超时

302     Move temporarily

临时重定向

301     Moved Permanently

永久重定向

总结:

1XX        Informational(信息状态码)               

2XX        Success(成功状态码)                       

3XX        Redirection(重定向状态码)      

4XX        Client Error(客户端错误状态码)

5XX        Server Error(服务器错误状态码)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼吐泡泡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值