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--参考这篇

相关推荐
程序员爱钓鱼1 小时前
Node.js 编程实战:文件读写操作
前端·后端·node.js
PineappleCoder1 小时前
工程化必备!SVG 雪碧图的最佳实践:ID 引用 + 缓存友好,无需手动算坐标
前端·性能优化
JIngJaneIL2 小时前
基于springboot + vue古城景区管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
敲敲了个代码2 小时前
隐式类型转换:哈基米 == 猫 ? true :false
开发语言·前端·javascript·学习·面试·web
澄江静如练_2 小时前
列表渲染(v-for)
前端·javascript·vue.js
JustHappy3 小时前
「chrome extensions🛠️」我写了一个超级简单的浏览器插件Vue开发模板
前端·javascript·github
Loo国昌3 小时前
Vue 3 前端工程化:架构、核心原理与生产实践
前端·vue.js·架构
sg_knight3 小时前
拥抱未来:ECMAScript Modules (ESM) 深度解析
开发语言·前端·javascript·vue·ecmascript·web·esm
LYFlied3 小时前
【每日算法】LeetCode 17. 电话号码的字母组合
前端·算法·leetcode·面试·职场和发展