大家好,我是IT修真院上海分院第01期学员,一枚正直善良的web程序员。
今天给大家分享一下,修真院官网 CSS任务中可能会使用到的知识点:
浏览器如何渲染页面
一、背景介绍
所有支持Javascript的浏览器都会使用同源策略这个安全策略。导致我们无法直接访问非同源的链接,无法取得非同源的数据,但在项目中我们的数据经常写在另一个源中,于是我们需要突破同源限制,取得其他源的数据,这就叫跨域。
二、知识剖析
常见的跨域方法有:
jsonp,利用了src属性可以跨域的特性
document.domain跨子域
Access Control,服务器端发送Access-Control-Allow-Origin响应头,规定请求的域名的访问权限
nginx反向代理,客户端nginx拦截代码中虚假的http请求,替换成正确的http
三、常见问题
四、解决方案
五、编码实战
六、扩展思考
JSONP跨域有什么优缺点?
优点:兼容性很好好,可以在古老的浏览器中运行,
缺点:它只支持GET请求而不支持POST等其它类型的HTTP请求。
jsonp和ajax有什么关系?
ajax是通过操作XMLHttpRequest对象发送请求,获取返回的数据。JSONP的全称为JSON with Padding,Padding 指的就是包裹在JSON 外层的回调函数。从刚才的例子中,咱们发现JSONP并没有操作XMLHttpRequest,因此jsonp和ajax没有任何关系。
如何用 JQUERY 实现 JSONP
七、更多讨论
问:详细讲一下什么是跨域?
答:
问:jsonp还有更多的缺点么?
答:JSONP目前还是比较流行的跨域方式,虽然JSONP使用起来方便,但是也存在一些问题:
首先, JSONP 是从其他域中加载代码执行。如果其他域不安全,很可能会在响应中夹带一些恶意代码,而此时除了完全放弃 JSONP 调用之外,没有办法追究。因此在使用不是你自己运维的 Web 服务时,一定得保证它安全可靠。
其次,要确定 JSONP 请求是否失败并不容易。虽然 HTML5 给元素新增了一个 onerror事件处理程序,但目前还没有得到任何浏览器支持。为此,开发人员不得不使用计时器检测指定时间内是否接收到了响应。
问:JSON和JSONP有什么区别?
答:JSON是一种轻量级的数据交换格式,像xml一样,是用来描述数据间的。JSONP是一种使用JSON数据的方式,返回的不是JSON对象,是包含JSON对象的javaScript脚本。
八、参考文献
参考一:跨域资源共享 CORS 详解
参考二:5 分钟彻底明白 JSONP
九、视频资料
感谢大家观看
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~