昨天做项目遇到一个ajax跨域的问题,终于花了一个晚上调好了。
ajax跨域的客户端代码:
$.ajax({
url:_vipLoginUrl + "/auth/checkLogin",
dataType:'jsonp',
jsonp: "callbackparam",//服务端用于接收callback调用的function名的参数
jsonpCallback:"success_jsonpCallback",//callback的function名称
success:function(data){
if(data.isLogin){
_login_callback_func.call();
}
else{
showMemberLogin();
}
},error:function(a,b,c,d){
alert(a+":"+b+":"+c+":"+d);
}
});
服务器的java代码:
@RequestMapping(value = "/auth/checkLogin")
public void authLogin(HttpServletRequest request,HttpServletResponse response){
try{
boolean isLogin = loginService.checkPTikets(request, response);
Map<Object, Object> map = new HashMap<Object, Object>();
map.put("isLogin", isLogin);
response.setContentType("text/plain");
String callbackFunName = request.getParameter("callbackparam");
response.getWriter().write(callbackFunName + "("+Json.toJson(map)+")");
}catch(Exception e){
logger.error("authLogin error",e);
}
}
注意:2个项目的一级域名必须一样,并且都要用document.domain=“domain.com”来设置。
Json.toJson是封装的Jackson。
原理还没有认真分析过,客户端的 jsonp: "callbackparam",
这个参数和服务器代码中的callbackFunName 的对应关系。
还有 jsonpCallback:"success_jsonpCallback"这个回调函数可以不写,服务器执行完了,会执行ajax中的success方法的。
相关推荐
解决ajax跨域问题
Ajax跨域问题及其解决方案.docx
SuperMap iClient for 示例演示了扩展ServiceBase类解决Ajax跨域问题
Spring Boot 使用 Redis 进行配置 Session 共享(Ajax 跨域) 源码下载。
本案例演示了MVC如何设置跨域。
ajax跨域问题的解决办法
关于跨域,有N种类型,本文只专注于ajax请求跨域(,ajax跨域只是属于浏览器”同源策略”中的一部分,其它的还有Cookie跨域iframe跨域,LocalStorage跨域等这里不做介绍),内容大概如下: 什么是ajax跨域 o原理 o表现...
本资源主要介绍了AJAX跨域的解决办法,以及解决方案间的比较
一个c# ajax跨域的demo,解决c# ajax 跨域的问题
NULL 博文链接:https://x125858805.iteye.com/blog/2215862
就是我的前端和后端是放在不同的服务器上的,然后使用opst请求的时候报错,所以通过查找相关的资料终于解决了,下面这篇文章主要给大家介绍了关于Spring MVC中自带的跨域问题解决方法的相关资料,需要的朋友可以参考...
跨域问题是我们大家在开发中会经常遇到的一个问题,所以下面这篇文章主要给大家介绍了关于Spring MVC中处理ajax请求的跨域问题与注意事项的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面...
什么是跨域,跨域出现的场景,模拟跨域,springmvc下解决跨域,springboot下解决跨域。绝对原创。
ajax 跨域问题!详细的说明了相应的用法!
cors跨域需要的cors-filter-1.7.1.jar和java-property-utils-1.9.1.jar,一个拦截器配置文件
主要介绍了详解Spring Boot 2.0.2+Ajax解决跨域请求的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
cors解决ajax跨域