web | http 的一些问题 | get/post的区别 | http版本 | http与https的区别 | session、cookie、token

怎么来说呢?这应该算一个大类了,基本上设计网络的应用层

当然重要的是从网络层----->应用层 (杠精勿杠,知道中间还有其他层)
先来讲一下http的结构

都知道http 有三部分,头部、请求头和body

头部:请求方式(等下会介绍get/post)、url、http版本

\r\n

请求头部:包括body数据类型(有的是压缩文件、文本文件(json格式、xml格式))、语言、token、主机信息(用户代理,浏览器身份识别器)

body

接下来将一下get/post的区别

首先从url开始说起,都知道get 会把用户的信息啥的都暴露在url上,所以,这也隐含了其他信息,就是get 的url只支持ASCII文件格式(如果是中文需要curl转码),然后长度方面get 有限制(好像是256?)然后post没有限制、get不支持复杂加密,post支持。所以对于表单这种信息密度贼高而且贼重要的数据就是采用post方式提交了啊(数据都放在body)

然后get方法具有幂等性,而post不具备。什么是幂等性呢?就是同样的请求被执行一次与被执行多次的效果是一样的,服务器的状态也是一样的。(也就是说幂等方式之后不应该有副作用)

然后还有一个要注意的就是,posto会发送两次tcp数据包,这也跟浏览器有关。

比如使用xml 的post响应,浏览器会先发送头部再发送数据,但是有的浏览起不会,比如火狐。

讲到这里,接下来就要讲http 的长连接与短连接,对于正常流程来说(因为是基于tcp通信,所以要先三次握手,再发送数据,数据发送完了,就要四次挥手)

但是有时候根据发送的数据类型,有的是单次的,有的是多次高频,密度贼高,向包含多媒体的资源,除了请求访问的页面资源还有请求多媒体的资源,这个过程就需要发送多个http请求,假如是每次发送一条数据就三次握手、四次挥手,就会造成服务器压力过高,这当然也就是我们常说的短连接。

对于上面的业务需求,就需要使用长连接,而什么长连接呢?就是在三次握手建立通信之后,把数据一次性全部发送出去,然后再四次挥手断开连接。

需要注意:http/1.0之前默认的都是短连接,如果需要使用长连接需要设置为Connection:Keep-Alive,而在http/1.0之后都是默认的都是长连接,度过需要断开连接,需要客户端或者服务器端提出断开,然后首部为:Connection:close

接下来要讲一下cookie和session


再讲一下https中的s

因为http是不安全的协议,为什么?你用抓包工具抓包看一下,数据全部公开!

然后 s 表示的是安全嘛

那如何保证数据的安全?

加密嘛,怎么加密,其实也是采用了ssl ssh 那套加密逻辑,服务器先发公钥,客户端通过公钥,但是如果中间有一个主机监听,相当于转发器,然后它也可以自然的获得公钥,然后采用同样的方式获得加密、解密。所以这时候就出来了一个数字证书。服务器先向数字证书机构申请数字证书,然后数字证书机构对数据做签名,将数据和数字签名打包一起做成数字证书发送服务端,在https通信的时,服务器会把数字证书发送给客户端。客户端获取数据和数字签名,使用数字证书机构公开的密钥验证数据和签名是否合法。

还有一点要注意哈,也不是大问题,就是,http 采用的是80端口,而https采用的是443端口

ps:现在的博客,很多都是乱七八糟,而且很多都是cv工程师,再一个可靠性也要打一个问号?这当然也是对入门的新手劝退教学吧!其实有时候特别想问这些人?你们发文章、写博客就不动脑子想一下,然后就直接cv发表吗?重点是全是标题党!

当然,也有一些写的很好的博客。

token--参考这篇

相关推荐
程序员爱钓鱼2 小时前
Go语言实战案例 — 项目实战篇:简易博客系统(支持评论)
前端·后端·go
excel10 小时前
ES6 中函数的双重调用方式:fn() 与 fn\...``
前端
可乐爱宅着10 小时前
全栈框架next.js入手指南
前端·next.js
你的人类朋友11 小时前
什么是API签名?
前端·后端·安全
会豪13 小时前
Electron-Vite (一)快速构建桌面应用
前端
中微子13 小时前
React 执行阶段与渲染机制详解(基于 React 18+ 官方文档)
前端
唐某人丶13 小时前
教你如何用 JS 实现 Agent 系统(2)—— 开发 ReAct 版本的“深度搜索”
前端·人工智能·aigc
中微子13 小时前
深入剖析 useState产生的 setState的完整执行流程
前端
遂心_14 小时前
JavaScript 函数参数传递机制:一道经典面试题解析
前端·javascript
小徐_233314 小时前
uni-app vue3 也能使用 Echarts?Wot Starter 是这样做的!
前端·uni-app·echarts