JSONP 详解
说实话,我学了这么久,其实也没有好好了解这个东西,当然平常自己在前端方面也涉猎较浅。
1) jsonp 是什么
JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的 跨域 数据访问的问题。
跨域? 由于同源策略的原因,也就是说你请求资源时,浏览器对于不是你当前域名或者端口号都相同的地址给与禁止访问,不允许你获取资源
同源策略:
examle.com:8080 与 examle.com:9090 不同源
examle.com:8080 与 examle.com:9090 不同源
a.examle.com 与 examle.com 不同源
2) 如何解决同源策略带来的问题
浏览器中对
script 、img、iframe
是给予支持的,所以我们可以采用类似引用数据的方式来获取资源
处理流程:
远程服务器取得js前端处理数据的函数名
将相关需要返回的数据保存
将数据串进行拼接,以函数的方式返回:showData(['a','b'])
3) 使用例子
// JS
发起跨域请求
--------------------
header('Content-type: application/json');
//获取回调函数名
$jsonp = htmlspecialchars($_REQUEST ['jsonp']);
//json数据
$json_data = '["customername1","customername2"]';
//输出jsonp格式的数据
echo $jsonp . "(" . $json_data . ")"; // 格式进行拼接,得到showdata(["customername1","customername2"]);
--------------
由此可见,其实就是远程服务器代前端处理了相关函数,通过返回一个带参数的函数表达式,来进行执行相关逻辑代码。 有效避免了直接向远程服务器请求数据
本文由 邓尘锋 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: May 4, 2019 at 11:39 am