请说说http的主要特点
1:无连接
2:无状态
3:简单快速
4:灵活
- 无连接
连接了一次之后连接就会断掉,需要重新请求才可以再次连接
- 无状态
客户端在第一次向服务端请求数据之后,连接就会断开,当客户端再次向服务端请求相同数据,那么服务端无法区分该客户端是否为同一个客户端,那么就会重新把整个数据再次打包发送
- 简单快速
具有统一资源符,比如当我们需要访问某一个网站页面的时候可以直接输入一个固定的网址就可以访问得到
- 灵活
在每一个http协议中的头部都有一个数据类型,通过一个http协议就可以完成不同数据类型的传输
HTTP报文的组成部分
1:请求报文
2:响应报文
-
请求报文又分为四个部分
-
请求行
包含http方法,页面地址,http协议以及版本
- 请求头
包含一些key,value值,来告诉服务端需要哪些内容
- 空行
用于分割请求头和请求体,告诉服务端空行后面的数据是请求体部分
- 请求体
- 响应报文分为四个部分
- 状态行
- 响应头
- 空行
- 响应体
HTTP方法
GET
-----获取资源
POST
-----传输资源
PUT
-------更新资源
DELETE
------删除资源
HEAD
-----获取报文头部
POST和GET的区别
- GET请求会被浏览器主动缓存,而POST请求不会被浏览器缓存,除非手动设置
- GET请求的参数会被完整的保存在浏览器历史记录,而POST的参数不会被保存
- GET请求在URL中传输的参数是有长度限制的,长度视不同浏览器会有所不同,一般为2KB,POST请求对传送的参数长度没有限制
- GET比POST更不安全,因为GET请求的参数都暴露在了URL中,不要使用GET来传递敏感信息
- GET参数通过URL传递,而POST的参数放在Request body当中
HTTP状态码
1xx:指示信息-----表示请求已被服务器接收,正在处理
2xx:成功------服务器已经成功接收请求
3xx:重定向------如果需要请求成功还需要更进一步的操作
4xx:客户端错误------客户端请求的数据存在语法错误或者请求无法实现
5xx:服务器 错误------服务器无法实现合法请求
200-------客户端请求成功
301-------所请求的页面已经永久转移到新的url
302-------所请求得页面被临时转移到新的url
304-------客户端发起的请求所请求的数据已经在客户端浏览器缓存了,服务器返回304告诉客户原来缓存的数据还可以继续使用
400-------客户端请求有语法错误,不能够被服务器所理解
401-------请求没有被授权,需要用户验证
403-------客户端访问的资源被禁止
404-------客户端访问的资源不存在
500-------服务器发生了不可预期的错误,缓存在浏览器的数据可以继续使用
503-------服务器零食过载或宕机,一段时间后才会恢复正常
持久连接
HTTP1.1版本才支持持久连接,及keep-alive模式开启
管线化
1:需要持久连接,并且支持HTTP/1.1
2:只有GET和HEAD 请求可以进行管线化,POST请求会有所限制
在持久连接下,我们理解的流程是:请求1->响应1->请求2->响应2->请求3->响应3
而实际是在请求的时候由于管线化,所有的请求和响应数据都会被打包,就变成了请求1-> 请求2->请求3->响应1->响应2->响应3
HTTPS
https是http的安全版,它的主要特点就是在传输层加了SSL证书
优点:比起http,https对传输的数据进行了加密处理,传输更加安全
缺点:握手时会比较耗费时间,需要花钱购买证书,缓存不如http高效
和http的不同,http的端口一般是80,而https的端口一般是443
TCP三次握手
TCP与UDP的区别
1:tcp是面向连接的,而udp是无连接的
2:tcp是可靠传输,udp是不可靠传输
3:tcp是1对1通信,而udp可以是1对多
什么是WebSocket
WebSocket是HTML5中的协议,它可以支持持续连续连接
Cookie,SessionStorage,LocalStorage的区别
- 相同点
都是保存在浏览器端
- 不同点
1:Cookie可以保存的数据非常小,一般只有4k,因为它可以可以在浏览器和服务器之间来回传递
2:SessionStorage和LocalStorage都是在本地保存
3:使用SessionStorage保存的数据,会在页面关闭的时候自动清除,而Cookie以及LocalStorage不会
4:Cookie的数据会在过了设定的时间之后清除(实现用户的自动登陆),而使用LocalStorage保存的数据需要手动去清除
Cookie和Session的区别
Cookie的数据保存在客户的浏览器上,而session数据放在服务器上
前端优化
1:降低请求量,比如对数据进行压缩,合并资源
2:加快请求速度,DNS预解析,CDN分发
3:缓存,比如离线数据缓存Localstorage
4:渲染,比如服务端渲染
常见的网络攻击
CSRF攻击
跨站请求伪造,可以理解为攻击者盗用了用户的身份,以用户的名义发送了恶意的请求
XSS攻击
跨站脚本攻击,攻击者通过注入恶意的脚本,在用户浏览网页的时候进行攻击