1.浏览器输入一个ur|到页面显示经历了哪些步骤(经典问题,必须要知道)
1.用户输入url;
2.浏览器查看缓存:浏览器缓存,操作系统缓存,路由缓存,ISP缓存;
3.DNS域名解析;
4.建立TCP链接;
5.发起HTTP请求;
6.服务器响应请求并返回结果;
7.关闭TCP链接 ;
8.浏览器渲染;
9.JS引擎解析
2.http和https的区别
http:// https://blog.csdn.net/qq_38289815/article/details/80969419
1、HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。
2、HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
3、HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)
3.跨域原理
由于浏览器的同源策略,(协议、域名、端口号),使得非同源请求的响应会被拦截
4.跨域解决方法(好多个,多说几种)
javascript中实现跨域的方式总结
1、jsonp请求jsonp的原理是利用<script>标签的跨域特性,可以不受限制地从其他域中加载资源,类似的标签还有<img>,<link>
注意:jsonp只能用于get请求
问题:<img>,<link>标签用于Jsonp请求时与<script>标签的区别
2、CORS跨域资源共享CORS背后的基本思想,就是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功还是应该失败。
需要后端的配合,后端设置Access-Control-Origin-响应头告诉浏览器哪些域名可以获得资源
,其中http请求可以分为简单请求和复杂请求
Web Socketsweb sockets原理:在JS创建了web socket之后,会有一个HTTP请求发送到浏览器以发起连接。取得服务器响应后,建立的连接会使用HTTP升级从HTTP协议交换为web sockt协议
本质是因为websockets并不是基于http连接的,而是基于tcp连接的全双工通信协议,因此不受同源策略限制
window.namewindow的name属性有个特征:在一个窗口(window)的生命周期内,窗口载入的所有的页面都是共享一个window.name的,每个页面对window.name都有读写的权限,window.name是持久存在一个窗口载入过的所有页面中的,并不会因新页面的载入而进行重置。
window.postMessagewindow.postMessages是html5中实现跨域访问的一种新方式,(h5提出的一个api)可以使用它来向其它的window对象发送消息,无论这个window对象是属于同源或不同源
document.domain
这种方式用在主域名相同子域名不同的跨域访问中
5.进程和线程
根本区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位
进程是一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的xx.exe就是一个进程。
线程是进程中的一个执行任务(控制单元),负责 当前进程中程序的执行。一个进程至少有一个线程,一个进程可以运行多个线程,多个线程可共享数据。
6.网络的七层协议
物理层
数据链路层
网络层(IP协议)
运输层(tcp,udp)
会话层
表示层应用层(http,ftp)
7.http缓存
8.GET、POST区别
- GET提交的数据会放在URL之后,以?分割URL和传输数据,参数间以&相连,如URL?name=test1&id=123456
- GET是从服务器上获取数据,无副作用,幂等,缓存,提交的数据大小有限制(因为浏览器对URL的长度有限制),不安全(如果用户名和密码将出现在URL上)
- GET产生一个TCP数据包
POST方法是把提交的数据放在HTTP的request body中
POST用于修改服务器上的数据,有副作用,非幂等,不可缓存,提交的数据没限制,安全(操作对用户不可见)
POST请求headers和body分开发送,产生两个TCP数据包(有些浏览器不会)
注:幂等就是多次执行结果和一次执行结果相同。