1、跨域的方式有哪些?各有什么特点?
1、JSONP
没有被同源策略限制到、像img的src, link的href、script的src
只能get请求,需要与后端商量好
function addScriptTag(src) {
var script = document.createElement("script")
script.setAttribute('type','text/javascript')
script.src = src
document.appendChild(script)
}
// 回调函数
function endFn(res) {
console.log(res.message);
}
// 前后端商量好,后端如果传数据的话,返回`endFn({message:'hello'})`
2、postMessage
- a窗口向b窗口发送数据,先把data转为json格式,在发送。提前设置好messge监听
- b窗口进行
message
监听,监听到了以同样的方式返回数据, - a窗口监听到message,在进行一系列操作
- b窗口进行
3、CORS
通过自定义请求头来让服务器和浏览器之间进行沟通
简单请求
请求方法是: POST GET HEAD
请求头只有 Accept
、AcceptLanguage
、ContentType
、ContentLanguage
、Last-Event-Id
非简单请求
浏览器先发送一个header头为option的请求进行预检
预检的格式
- Origin
- Access-Control-Request-Method
- Access-Control-Request-Header
4、nginx代理跨域
- nginx模拟一个虚拟服务器,因为服务器与服务器之间是不存在跨域的,
- 发送数据时 ,客户端->nginx->服务端
- 返回数据时,服务端->nginx->客户端
2、讲一下三次握手和四次挥手?以及为什么是三次? 为什么是四次?
3、HTTP和HTTPS的区别?
4、讲讲HTTP的缓存?
缓存就是把一些没有必要重新获取的数据,存放起来,以便下次直接使用。
5、TCP和UDP有什么区别?
TCP是面像连接的,可以通过三次握手四次挥手,错误会重传
UDP不面向连接,没有连接会速度快点,失败就失败了
6、浏览器输入URL后都经历了什么?
输入URL之后,首先进入的将域名进行DNS解析,然后通过服务器的负载均衡,分配给你一个解析后的IP, TCP连接, 然后发送HTTP请求,然后通过三次握手连接,拿到服务器的内容,将dom渲染成dom tree css渲染成css tree, 然后生成渲染树,进行回流和重绘,然后显示。
7、什么是CDN?
缓存,加节点渲染,会就近分配服务器返回资源
8、什么是xss?什么是CSRF?
xss脚本攻击, 输入框,爬虫,, 解决方案: 反扒,数据造假、验证码
csrf跨站请求伪造,即拿着网站A的信息,去请求网站B的内容,所以请求要携带token验证
9、HTTP常见状态码?
http常见状态码
405:客户端请求的额方法被禁止
408:服务器等待客户端发送的请求时间过长,超时
200:服务器成功处理了请求
400:客户端发送了一个错误的请求
404:未找到资源
500:服务器内部出现错误
501:服务器遇到错误,使其无法对请求提供服务
1XX :代表服务器收到了请求
301:永久重定向
302: 临时重定向