3.1服务端编程
1.JSONP优缺点?
优点:
1.JSONP可以跨越同源策略
2.它的兼容性较好
3.请求完毕后可以通过调用callback方式回传结果。
缺点:
1.只支持GET请求,不支持POST等其他类型的HTTP请求。
2.调用失败时不会返回各种HTTP状态码
扩展:json与jsonp区别?摘自
json是一种轻量级的数据交换格式,jsonp是一种跨域数据交互协议。
理解:
json是理想的数据交换格式,但没有办法跨域直接获取,于是将json包裹(padding)在一个合法的js语句中作为js文件传过去。这就是json和jsonp的区别,json是想要的东西,jsonp是为了达到这个目的而普遍采用的一种手段。
2.跨域是什么?
浏览器从一个域名的网页去请你去另一个域名的资源时,域名,端口,协议任一不同,都是跨域。
3.如何实现跨域?
(1)JSONP跨域
利用script标签没有跨域限制的漏洞,动态创建一个script标签,其src属性值指向第三方的API网址,并提供一个回调函数来接收数据。
缺点:只能get方式,容易受到XSS攻击。(跨站脚本攻击)
扩展—如何防范XSS攻击?
XSS指攻击者在返回的HTML中嵌入JavaScript脚本,解决方法有两种
第一种是:设置set-cookie:httponly-,可以禁止js脚本访问cookie
第二种是:set-cookie:secure-,只在请求为https的时候发送cookie
(2)CORS,跨域资源共享
当使用XMLHttpRequest发送请求时,如果浏览器发现违反了同源策略就会自动加上一个请求头origin;
后端在接受到请求后确定响应后会在Response Headers中加入一个属性Access-Control-Allow-Origin;
浏览器判断响应中的Access-Control-Allow-Origin值是否和当前的地址相同,匹配成功后才继续响应处理,否则报错。
缺点:忽略cookie,兼容性不好
(3)代理跨域请求
前端发送请求,经过代理,请求需要的服务器资源
缺点:需要额外的代理服务器
(4)html5 postMessage方法(window属性)
允许来自不同源的脚本采用异步方式进行有限的通信,可以实现跨文本、多窗口、跨域消息传递。
缺点:浏览器版本要求,部分浏览器需要配置放开跨域限制
(5)修改document.domain跨子域
相同主域名下的不同子域名资源,设置document.domain为相同的一级域名
(6)基于html5 websocket协议
websocket是html5一种新的协议,基于该协议可以做到浏览器与服务器全双工通信,允许跨域请求。
缺点:浏览器版本要求,且服务器需要支持websocket协议
(7)document.xxx+iframe
通过iframe是浏览器非同源标签,加载内容中转,传到当前页面的属性中
缺点:页面的属性值有大小限制
4.dom是什么?你的理解?
DOM即文档对象模型,是W3C制定的标准接口规范。DOM提供了对整个文档的访问模型,将文档作为一个树形结构,树的每一个结点表示了一个HTML标签或标签内的文本项。
扩展:虚拟DOM?
对真实DOM的抽象,以js对象作为基础的树,用对象的属性来描述节点,最终通过一系列操作使这棵树映射到真实环境上。
js中,虚拟DOM表现为一个object对象。
5.关于dom的api有什么?
1.创建节点的api
createElement 创建节点
createtextNode 创建文本节点
createDocumentFragment 创建临时节点
2.修改节点的api
appendChild 添加子元素
insertBefore 添加节点到参照节点前
removeChild 删除指定节点
replaceChild 替换节点