前端面试准备-2

来源:互联网 发布:mysql怎么快速替换东西 编辑:程序博客网 时间:2024/06/06 06:50

1.一次完整的http事务是怎么样的过程?
(1)通过域名寻找ip地址
浏览器会首先搜索自己的浏览器缓存里面有没有DNS缓存,如果找到则结束,里面有域名对应的Ip地址。

如果浏览器缓存没有找到,则会继续往操作系统中查找是否有DNS缓存,如果找到则结束,否则进行下一步。

在操作系统中没有找到,就会尝试读取hosts文件,看看文件里面有没有对应的ip地址,否则继续下一步。

浏览器会向本地的DNS服务提供商发起域名解析请求,通过UDP协议发送,运营商的DNS服务器首先会查找自身的缓存,如果没有则会继续往根域名发送请求,根域名服务器如果发现是com或者cn的域名,则会让你往com的DNS服务器查找,最终查找成功之后,发送给了运营的DNS服务器,然后运营商返回给操作系统,操作系统返回给浏览器,他们也会缓存一份。
(2).通过ip地址往 服务端请求资源
浏览器获得了ip地址之后,就可以去查找对应服务器上的资源。首先会查看本地是否缓存了当前请求的资源的文档,如果有缓存,则直接页面显示到浏览器上。
如果没有缓存,接下来先要进行TCP三次握手,和服务端握手成功后,发送Http请求,服务端会判断请求的资源是否和上次请求的没有更改,如果没有更改,则返回304,如果有更改,则返回200,并把资源文件发送给浏览器客户端。
到此,http的一次完整事务就结束了。
2.Web攻击技术有哪些?
(1)xss跨站脚本攻击
一般xss攻击都是html注入的问题,没有对攻击者的输入进行严格的过滤和检查,然后进入数据库中,最后在其他用户那里执行了攻击者的代码。避免的方法是要对用户的输入做一个严格的检查和过滤。
(2)跨站请求伪造
伪造用户的请求,冒充用户在站内的正常操作。
1.登录受信任网站A,并在本地生成cookie
2.在不登出A的情况下,访问危险网站B
CSRF是如何预防的?有以下几种方法:
利用referer信息
referer代表访问,访问者URL的来源,如果不是来源于网站A,则不管这个请求。
利用token
用户提交请求时,后台返回给客户端一个token,以后每次请求时,都带上加密后的Token,服务端接收到请求之后,需要先验证这个token的正确性才进行响应。
利用验证码
用户提交的时候,需要正确验证验证码,以防恶意网站的提交。
3.ajax是什么?ajax交互模型?同步和异步的区别?如何解决跨域问题?

ajax,它是一种快速创建动态网页的技术,可以在不刷新整个网页的情况下,通过与后台交换少量数据,为网页进行异步更新。这里写图片描述
同步和异步区别
解决跨域问题
jsonp(json with padding)
因为script和img这种标签不受同源策略的影响,可以直接下载服务器的资源,所以可以利用这个原理。通过动态创建script标签,然后用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。
cros跨域资源共享
cros需要浏览器和服务器同时支持,当客户端发送跨域请求时,浏览器会自动在头信息之中,增加一个Origin字段,表示请求的来源(协议+域名+端口)。服务器根据这个值,决定是否同意这次请求。服务端需要设置三个值:
Access-Control-Allow-Origin:http://www.qq.com
Access-Control-Allow-Credentials:true
Access-Control-Expose-Headers:qq代表所有
第一个字段其实是请求来源,或者可以用*代表所有都可以跨域。第二个字段可选,表明可以返回这个字段的值。
4,什么是优雅降级和渐进增强?
优雅降级
先对网站构建完整的功能,然后在对低版本的浏览器进行兼容性开发。
渐进增强
首先针对低版本浏览器进行构建页面,保证最基本的功能,然后在针对高级浏览器进行效果.交互等改进和追加功能能达到更好地用户体验。

原创粉丝点击