浅析 JSONP 跨域原理
You are here:开发&语言 -HTML5 |
作者 乔淑夷发布于 2017年07月11日 阅读 46 JSONP 的出现是因为浏览器的同源策略,同源是指所请求的域名、协议、端口号和当前请求相同,同源策略限制了原生XMLHttpRequest() 对象无法获取到 JSON 数据,但是标签是可以跨域的。JSONP 的原理是通过标签向服务器发送请求,将前端方法作为参数传递到服务器,服务器接收到请求后将 JSON 数据作为该方法的参数,返回 JavaScript 文本,前端方法就可以拿到数据。注:由于使用... |
JSONP 的出现是因为浏览器的同源策略,同源是指所请求的域名、协议、端口号和当前请求相同,同源策略限制了原生XMLHttpRequest() 对象无法获取到 JSON 数据,但是 <script><img><link> 标签是可以跨域的。 JSONP 的原理是通过 <script> 标签向服务器发送请求,将前端方法作为参数传递到服务器,服务器接收到请求后将 JSON 数据作为该方法的参数,返回 JavaScript 文本,前端方法就可以拿到数据。 注:由于使用的是 script 标签的 src 属性,所以只支持 get 方法 服务器返回数据: callback([ { "logo":"img-1.png", "title":"标题1" }, { "logo":"img-2.png", "title":"标题2" }, { "logo":"img-3.png", "title":"标题3" }, { "logo":"img-4.png", "title":"标题4" } ]) 原生 JS 实现方式: function jsonp(req){ var script = document.createElement("script"); script.setAttribute("src", req.url+"?param="+req.callback.name); document.body.appendChild(script); } function callback(res){ console.log(res); } jsonp({ url: '', callback: callback }) JQuery 实现方式: unction callback(res){ console.log(res); } $.ajax({ url: '', type: 'GET', dataType:'jsonp', jsonp:'callback', jsonpCallback:'callback', success: function (res) { console.log(res); } }); 转载请并标注: “本文转载自 linkedkeeper.com (文/张松然)” |
乔淑夷 作者 |
如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作! 赞赏支持 |
注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。