常见的HTTP状态码有哪些?
200:请求成功
301:永久重定向
302: 临时重定向
303:所请求的资源在别的url下找到
304:从浏览器缓存中获取
403:禁止访问
404:页面资源不存在,网页找不到
500:服务器内部错误
503:服务器端无法响应,服务器由于维护或已经超载而无法响应,服务器临时过载,或当机
504:网关超时
http与https的区别?
http: 默认端口 80, https: 默认端口443
HTTPS在http的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
HTTP协议
HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议(传输控制/网络通讯协定)的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程。客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式。
五层网络模型
应用层 HTTP协议, DNS协议
运输层 TCP协议, UDP协议
网络层 IP地址 ———— IP协议
数据链路层
物理层
一层一层往里套,最外层是物理层,最里面是应用层。
传输一个数据时,需要层层的加密,然后层层的解密。
0:低电平
1:高电平
TCP/IP协议 (对方的IP, 自己的IP, 对方的端口) HTTP协议 (请求头)
发送到我们的手机,我们得通过端口区分,区别数据是传输给哪个应用的。 QQ的端口,微信的端口,
TCP 与 UDP的区别?
TCP传输控制协议
UDP用户数据报协议
1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的
UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
输入一个url会发生什么?
加载过程
- 浏览器DNS域名解析成ip地址
- 客户端通过TCP协议建立到服务器的TCP连接(三次握手)
- 客户端向服务器发送http协议包,请求服务器资源包
- 服务器向客户端发送HTTP协议应答包
- 客户端和服务器断开连接
渲染过程: 根据HTML结构生成DOM树 根据CSS生成CSSOM 将DOM 和 CSSOM 整合形成RenderTree 根据 RenderTree 开始渲染和展示 遇到<script>时, 会执行并阻塞渲染
TCP的三次握手和四次挥手
get 和 post的区别?
-
浏览器上的GET和POST
- GET的数据在URL是可见的。POST请求不显示在URL中。所以相对来说更不安全。
- GET对长度是有限制的,POST长度是无限制的。
- GET请求的数据可以收藏为书签,POST请求到的数据不可收藏为书签。
- GET请求后,按后退按钮、刷新按钮无影响,post数据会被重新提交。
- GET编码类型:application/x-www-form-url, post的编码类型:有很多中。encodeapplication/x-www-form-urlencoded(加密的,编了码的),multipart/form-data(发送文件)
- GET的历史参数会被保存在浏览器里,post不会保存在浏览器中。
- GET只允许ASCII, POST没有编码限制,允许发二进制的。(文件流)
- GET与POST相比,GET安全性较差,因为所发出的数据是URL的一部分。
- GET产生一个TCP数据包;POST产生两个TCP数据包。(对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据))
-
Ajax的HTTP请求 理论上的 (Specification): GET和POST具有相同语法的,但是有不同的语义。get是用来获取数据的,post是用来发送数据的,其他方面没有区别。
ajax原理
什么情况下回遇到跨域,描述一下前端常见处理跨域的几种方式? 并封装一个jsonp原理
浏览器最核心,最基本的安全功能是同源策略。限制了一个源中加载文本或者脚本与其他源中资源的交互方式,当浏览器执行一个脚本时会检查是否同源,只有同源的脚本才会执行,如果不同源即为跨域。
即使跨域了,请求也是可以发出的,服务器也是能够接受的,服务器也会正常处理并且返回这些数据。浏览器也能接收到这些数据。接收到之后,单页面的域和请求的域不同,所以判定为跨域。 我们的代码在这等着结果,但是因为浏览器判定为跨域了,不会把结果传递给我们的代码。
(1)Jsonp: 原理就是利用了script 标签不受同源策略的限制,在页面中动态插入了script, script标签的src属性就是后端api接口的地址,并且以get的方式将前端回调处理函数名称告诉后端,后端在响应请求时回将回调返回,并且将数据以参数的形式传递回去。
浏览器端存储有哪些,并描述他们的区别。
cookie webStorage(localStorage sessionStorage) 大小,过期时间,是否会随着http请求发送,