jsonp跨域学习总结
来源:互联网 发布:315怎么投诉淘宝卖家 编辑:程序博客网 时间:2024/06/13 23:41
一、背景:
Web页面上调用js文件时则不受是否跨域的影响(不仅如此,我们还发现凡是拥有”src”这个属性的标签都拥有跨域的能力,比如标签script、img、iframe)
二、原理
JSONP,该协议的一个要点就是允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。
三、实现
方法一:
后端:
@RequestMapping("crossDomain") public void crossDomain(HttpServletRequest request, HttpServletResponse response) throws IOException { Map<String,String> resultMap = new HashMap<String,String>(); String callback = request.getParameter("callback"); resultMap.put("success", "true"); response.setContentType("text/html;charset=UTF-8"); PrintWriter writer = response.getWriter(); writer.print("var callback=(" + JsonUtil.object2Json(resultMap)+")"); }
输出格式:
前端:
<script src='http://***/crossDomain'></script>
src后的内容就是第三方的接口地址。
<script> console.log(callback);</script>
输出:
“callback”只是相当于一个变量名称,前端接收后直接可以读到Object中的内容。
方法二:
后端:
public void crossDomain(HttpServletRequest request, HttpServletResponse response) throws IOException { Map<String,String> resultMap = new HashMap<String,String>(); String callback = request.getParameter("callback"); resultMap.put("success", "true"); response.setContentType("text/html;charset=UTF-8"); PrintWriter writer = response.getWriter(); writer.print(callback + "(" + JsonUtil.object2Json(resultMap)+")"); }
前端:
$.ajax({ url: 'http://***/crossDomain', type: 'get', data: {}, dataType: "jsonp", jsonp:"callback", success : function (data) { alert("success"); }, error : function (data) { alert("error");console.log(data); },});
原理背景参考:
http://www.qdfuns.com/notes/16738/1b6ad6125747d28592a53a960b44c6f4.html
阅读全文
0 0
- jsonp跨域学习总结
- jsonp 跨域请求学习总结
- Jsonp 跨域总结
- jsonp 跨域学习
- JSONP跨域总结和实践
- Json学习总结(3)——Jsonp跨域及Rest接口实现
- ajax学习笔记之跨域jsonp
- 项目技术总结一之JSONP实现跨域调度
- 技术点-Jsonp跨域请求-概念性总结
- 技术点-Jsonp跨域请求-技术性总结
- js跨域总结(jsonp,postMessage,CORS)
- jsonp 跨域原理:深入浅出 jsonp
- javascript高级程序设计---学习jsonp(解决跨域)
- jQuery 之ajax jsonp跨域请求学习笔记
- jsonp学习二验证跨域数据访问
- jsonp跨域学习以百度为例
- jsonp 跨域访问
- JSONP跨域访问
- Android解包命令:unpackbootimg与打包命令:mkbootimg使用
- System.Threading.Tasks.TaskExceptionHolder.Finalize() 系统错误c#
- POJO与JavaBean区别
- 使用echarts不能找到ID.报错echarts is not defined.
- JVM(二)JVM内存布局
- jsonp跨域学习总结
- SVN服务器的本地搭建和使用
- MATLAB的.mat文件与txt文件的相互转换(mat转txt,数据格式设置)
- hdu5489 Removed Interval
- JAVA学笔记——测量身体质量
- Http请求连接池
- Spring事务管理-使用基础
- 递归
- HttpClients 工具类