本文是记录查看MDN文档之后关于HTTP的一些个人离散的记忆点,更详细内容可以查看链接:https://developer.mozilla.org/zh-CN/docs/Web/HTTP

HTTP概述

HTTP可以说是互联网的重要基石之一,我们平时最普通的浏览器行为其实就是在发送HTTP请求(当然更多是HTTPS请求,相比HTTP多了SSL的安全证书认证,来判定该网站是真实合法的‘好’网站)。

HTTP的历史可以说是由来已久,有0.9,1.0,1.1和2.0,使用最普遍的就是1.1版本。相比于之前的版本,有头部控制,可以通过HEADER来传输双方约定的信息,比如Authorization认证,cookie会话等。还加入了长连接(我还没用过),可以在一次HTTP连接建立后传输多次的HTTP报文,减少了多余的三次拉手(建立连接)和四次挥手(断开连接)的开销。

而2.0版本(我也没用过????),则多出了压缩HEADER,之前的HEADER都是ASCII传输,可以直接阅读。压缩成二进制后,可以进一步增加传输速度。而且底层协议,也从TCP进化到UDP,通过协议控制来增加可靠性。与我们最初理解的TCP/UDP完全不同,原始的UDP都说是不可靠的,只负责发,不会理会接收端是否正确按顺序的接受。但后面为了速度考虑,前辈们选择了改造UDP,创造出QUIC。

HTTP中文是超文本传输协议,我最早理解的超文本(错误的,别学)是非文本的意思,比如图片、视频。但后面才看到超文本其中的‘超’更多是指超链接,可以跳转到其他网页这种方式。

有用python的flask测试过HTTP的认证,有带账号密码的基础认证,在Header里面Authorization Basic XXXXX。也看过更简单的,直接POST账号密码过去,不过就等于是明文传输,不安全。还测试过线用Basic认证拿到一个cookie,然后后续的登陆都使用cookie来进行用户身份确认。

做API接口的时候,遇到如果网页前端和后端服务器不是在同一台机器(此处不确定描述是否准确,请读者注意),那么调用接口的时候会被网页的拒绝,查看错误是显示被拒绝访问,需要在服务端允许CORS跨源访问。而且如果是在其他网页打开的控制台,想调用接口,也经常说因为内容不安全而被拒绝,需要把服务器设为HTTPS。

请求报文与响应报文,示例如下:

MDN文档-HTTP概述MDN文档-HTTP概述

请求报文第一行是方法,路径,协议版本。

其中方法有GET,POST,PUT,HEADER等

GET最常用,是获取Path路径的资源,HEADER类似,多用于测试链接通路,只获取资源的头部信息,不实际获取资源。

POST和PUT都是上传数据,而有一种说法是POST类似数据库的INSERT增加,而PUT类似数据库的UPDATE更新。

但实际上每种动作对应的操作,是看服务器后端是如何来定义的,甚至可以将POST的功能写的与GET一样,但没人这么做。

第一个方法讲究一个描述动作,与RESTFUL接口类似,方法的选择要有意义。

响应报文第一行是协议版本,状态码,状态信息。

状态码常见的有200,404。而状态信息可以更详细的描述问题,尤其是获取失败的时候。

 

文章只是记录个人见解,如果有误,欢迎指正。

图片是其他网站截取,非自己绘制。

 

相关文章: