jsonp跨域
来源:互联网 发布:中华民族知乎 编辑:程序博客网 时间:2024/05/20 21:57
jsonp跨域请求
项目中的错误
因为js不支持跨域请求,而有时候又必须要对其他的系统进行跨域获取数据,测试中报错信息如下
XMLHttpRequest cannot load http://localhost:8088/item/token/b993c14f-de0d-4c36-ba1b-5123c17dc5f0. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8082' is therefore not allowed access.
所谓跨域:就是不同域名,同域名不同端口,同域名不同IP地址
在项目中:往往需要各个独立的应用中,js需要获取其他应用下的数据,但是js却不支持跨域请求,可能处于安全性考虑。
原理
jsonp的跨域可以算是js的一种漏洞,其原理是
<script src="/js/main.js"/>
script标签的src中url地址,这个标签可以加载跨域请求的js,并且返回这个js,这一点你可以只在开发者工具中直接查看。
利用script的src属性,我们在本地定义一个function demo1(data){对data进行业务处理}
一个跨域请求的ajax,请求数据,带参数callback=demo1,
支持jsonp的服务端,判断参数是否有callback,有的话
进行跨域处理,返回demo1({id:1,status:200})这样的数据,
js会认为这是一段js,执行我们已经定义好的demo1这个function
案例
----------//JS.ajax({ url : "http://localhost:8088/user/token/" + _ticket, dataType : "jsonp", type : "GET", success : function(data){ if(data.status == 200){ var username = data.data.username; var html = username + ",欢迎来到我的购物网 class=\"link-logout\">[退出]</a>"; $("#loginbar").html(html); } } });<span id="loginbar" style="margin-right: 15px;"> <a href="#">请登录</a> </span>----------//Java代码/* @RequestMapping("/token/{token}") @ResponseBody public String getCookieAndUser(@PathVariable String token,String callback){ Result result = tokenService.getCookieAndJson(token); if(callback != null && !"".equals(callback)){ String call = callback + "(" +JsonUtils.objectToJson(result) +");" ; return call; } return JsonUtils.objectToJson(result); }*/ @RequestMapping("/token/{token}") @ResponseBody public Object getCookieAndUser(@PathVariable String token,String callback){ Result result = tokenService.getCookieAndJson(token); if(callback != null && !"".equals(callback)){ // String call = callback + "(" +JsonUtils.objectToJson(result) +");" ; //return call; MappingJacksonValue jacksonValue = new MappingJacksonValue(result); jacksonValue.setJsonpFunction(callback); return jacksonValue; } return JsonUtils.objectToJson(result); }
阅读全文
0 0
- json、jsonp、jsonp跨域
- JSONP跨域
- JSONP跨域
- Jsonp 跨域
- jsonp 跨域
- jsonp跨域
- jsonp 跨域
- jsonP跨域
- jsonp跨域
- JSONP跨域
- 跨域 - JSONP
- jsonp跨域
- 跨域jsonp
- 跨域-JSONP
- jsonp跨域
- Jsonp跨域
- jsonp跨域
- jsonp跨域
- 夏至未至
- LaTeX数学公式
- Javax.swing中JFrame.getContentPane().add(pane)与JFrame.add(pane)有何区别?
- php 乱码, 在头部添加utf-8 怎么加
- Java-判断回文数
- jsonp跨域
- iOS 关键字 static extern const volatile 区别及应用场景
- 2017ZZUACM省赛选拔 聪明的田鼠
- 如何从程序员走向技术管理岗位?
- j加油
- 微信小程序可视化开发工具之动态数据
- Android系统源码编译之4--unbutu下安装git repo并下载源码 下载7zip
- 全面剖析Redis Cluster原理和应用
- freecodecamp项目---twitch API