
2021年JSONP跨域原理及最优解决方案.docx
4页精品word学习资料可编辑关于 JSONP 跨域请求数据的原理及最优解决方案什么是 JSONP ?它的实现原理?JSONP即 JSON with Padding ;由于同源策略的限制, XmlHttpRequest 只答应请求当前源(域名,协议,端口)的资源;假如要进行跨域请求,我们可以通过使用 html 的script 标记来进行跨域请求,并在响应中返回要执行的 script 代码,其中可以直接使用JSON传递 javascript 对象;这种跨域的通讯方式称为 JSONP;其实说白了,就是利用 script 标签这种不受跨域的限制向服务器发送一个请求,服务器端返回的为一个可执行的 javascript 文件,如下代码示例:名师归纳总结——欢迎下载精品word学习资料可编辑|精.|品.|可.|编.|辑.|学.|习.|资.|料.1. 2.
3.4. 第一向服务器端发起一个请求并传入参数 user_id ,服务器端返回的数据如下:1. window [ "jsonp" ] = { 2. "id" : "12" ,3. "name" : "jsonp"4. }优化方案服务器端返回的 JSON 格式的数据直接赋值给 window 下的 jsonp 变量,这样在页面中就可以通过 jsonp 这个变量取得数据了;不过上面的代码看起来并不文静,我们把 script 标签直接写在了请求的页面中,这样存在一个风险,假如我们在没有拿到数据前就用了 jsonp 这个变量, js 就会报错,堵塞后面脚本的执行;之前一篇中提到过无堵塞式加载 js,我们可以通过动态创建 script 标签,异步向服务器端发送请求,代码如下:1. 2.3. 29.30.我们把动态创建 script 标签的方法封装在 loadScript() 方法中,接受两个参数,一个是请求的 url ,另外一个是请求成功后的回调函数,这样就可以保证我们执行的代码是在请求成功之后执行的,这样就不会造成先执行,但仍没有请求成功的问题;但是我们仍发觉一个问题,服务器端返回的 JSON 格式的数据是直接赋值给了 window 下的全局变量,这样对全局造成了污染,并不好;更好的解决方法是在请求的 url 后加一个回调函数的参数,如下代码所示:名师归纳总结——欢迎下载精品word学习资料可编辑|精.|品.|可.|编.|辑.|学.|习.|资.|料.1. 2.3. 29.30.名师归纳总结——欢迎下载精品word学习资料可编辑此时服务器端返回的数据为,如后端语言为php ,就返回的代码为:1. echo $_GET [ "callback"]. "( { "id ": " 12 ", "name ": "jsonp "} )"这样就可以解决变量全局污染的问题,同时也让我们的接口变得更加通用,而不是写死的;JSONP 的不足之处及安全问题JSONP 的好处就是能够很好的解决跨域请求的问题,但是也有一些不足之处:.请求的状态不够丰富,我们只能侦听请求成功时的状态,假如请求失败,我们无法通过一个状态码知晓,所以假如请求失败的话,没有任何反馈给用户,可能会造成用户的困惑;.由于 script 标签不受同源的限制,同时也造成了一些安全性的问题使用远端网站的 script 标签会让远端网站得以注入任何的内容至网站里;假如远端的网站有 JavaScript 注入漏洞,原先的网站也会受到影响;.现在有一个正在进行方案在定义所谓的JSON-P 严格安全子集,使浏览器可以对MIME 类别是 “ application/json-p ”请求做强制处理;假如回应不能被解析为严格的JSON-P,浏览器可以丢出一个错误或忽视整个回应;|精.|品.|编.|可.|辑.|习.|学.|资.|料.名师归纳总结——欢迎下载。点击阅读更多内容
相关文档
Unit2 Health and Fitness语法课件-(高教版2023·基础模块2).pptx
九年级数学提升精品讲义 用配方法求解一元二次方程(原卷版).docx
九年级数学提升精品讲义 一元二次方程的根与系数的关系(解析版).docx
2025学年九年级化学优学讲练(人教版) 化学实验与科学探究(解析版).docx
九年级数学提升精品讲义 一元一次不等式与一元一次不等式组(原卷版).docx
九年级数学提升精品讲义 因式分解(解析版).docx
九年级数学提升精品讲义 相似三角形的性质(原卷版).docx
2025年 初中七年级数学 相交线与平行线 知识突破速记与巧练(原卷版).docx
九年级数学提升精品讲义 中点模型之斜边中线、中点四边形(解析版).docx
2025学年九年级化学优学讲练(人教版) 分子和原子(解析版).docx
九年级数学提升精品讲义 正方形的性质(原卷版).docx
九年级数学提升精品讲义 用因式分解法求解一元二次方程(解析版).docx
2025年 初中七年级数学 实数 知识突破速记与巧练(原卷版).docx
九年级数学提升精品讲义 应用一元二次方程(原卷版) (2).docx
2025年 初中七年级数学 相交线与平行线 压轴专练速记与巧练(解析版).docx
九年级数学提升精品讲义 用公式法求解一元二次方程(解析版).docx
2025学年九年级化学优学讲练(人教版) 化学方程式的书写(原卷版).docx
九年级数学提升精品讲义 应用一元二次方程(解析版) (2).docx
2025年 初中七年级数学 数据的收集、整理与描述 综合测试速记与巧练(解析版).docx
九年级数学提升精品讲义 中点模型之斜边中线、中点四边形(原卷版).docx
猜您喜欢
2021年成本会计试题一说课材料.docx
2021年年企业职工劳务用工合同.docx
2021年学校特色建设方案教程文件.docx
2021年兴隆学校乡村学校少年宫活动展示实施方案.docx
2021年国际货运代理课程标准.docx
2021年Linux张同光版课后习题答案.docx
2021年函数的概念课时作业.docx
2010-2012第一学期数字地形测量学期末考试试卷A(含参考答案)最新(精华版).docx
2021年平流式沉砂池设计参数.docx
2021年《公安业务知识》最全的总结.docx
2021年幼儿园安全教育培训内容.docx
建筑工程施工阶段质量监理探析.docx
建筑施工安全的五大不利因素须知.docx
2021年家电配送合同.docx
2021年【教案】Access数据库技术应用教案.docx
FIDIC施工合同工程款规定.docx
建筑预应力管桩规格和适用条件.doc
2021年小学生心理健康评价方案.docx
2021年农业害虫防治论文.docx
(完整版)高中生物必修3知识点总结(完成)最新(精华版).docx
相似文档 更多>
正为您匹配相似的精品文档
