现在有两个前端项目 在其中一个项目中 使用url引用了另外一个项目的页面,
两个项目共用一个后台 ,后台使用的spring mvc,现在我需要把我登录的用户ID传到
另外一个项目上,使用的session存储的用户信息。但是拿不到,因为两个不是同一个项目请求不同。求解。大神们help me....
看我的一篇文章,在过滤器设置允许跨域即可。
http://blog.csdn.net/qq_27373459/article/details/77099207
大神提供下思路或者解决方案,100C奉上。。
跨域一直都是一个比较头疼的问题。。。。
厄,你可以在后台重定向一下,将第一个项目的用户ID,发送给另一个项目,然后在另一个项目里接收处理一下,对于后台来说,不管你是哪个项目,都只是一个请求,http是无状态链接啊
你可以用通信的方式两个项目之间互传这些,比如socket、 mq等等,这边登录成功了把用户信息给另外的发过去,然后执行你想要做的事情
看看这个吧 http://blog.csdn.net/u013614451/article/details/48195033
url?userId=xxxx;这样传参过去 结果还是拿不到
针对这种情况你可以用js来获取参数
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}
这个传参 用http 协议试试吧 看看行不行
可以使用ajax,然后在ajax基础上增加跨域请求,具体的你可以去搜jsonp,我前几天刚好用了一下,走通了
说说ajax 跨域、说说JSON和JSONP
http://blog.csdn.net/zy841958835/article/details/77662781
这个问题我曾经遇到过,后来我的解决是这样的,使用 缓存共享能解决
我觉得其实方法也算有吧,我自己是这几个思路:
1.一种是后台里面自己设置一个公共类(缓存,使用键值对确保唯一),只要后台任何一个地方都能访问它,那么不管哪个都行,这种的话其实自带就可以了(applicationg的作用域范围:页面《请求《session《application),不过这个访问权限一般不会用,所以无所谓。
方法1的话其实用一个第三方的缓存也是可以的,当然本质其实session也可以,这里的问题是在于如何取得通一个session,这个可以通过写入session的唯一标识符到cookie里面也能做到,只是名字一样
2.通过URL传参也是可以的,本质也和1差不了多少。
其实这种的思路在于,是哪个对象?怎么找到这个对象?谁持有这个对象?
$.ajax({
url:"http://localhost:8080/xxx.do",
type : "post",
dataType : "jsonp",//数据类型为jsonp ,一定得是jsonp
jsonp: "callback",//服务端用于接收callback调用的function名的参数
success: function(data){
$.alert('数据加载成功');
},
error: function(){
$.alert('数据加载失败');
}
});
然后后台可返回map数据或json格式或String格式的数据,但一定得return callback( +你返回的数据+ )
不懂再百度jsonp的跨域方法和注意方式
$(document).ready(function(){
$.ajax({
url:"http://localhost:8080/xxx.do", //你的url
type : "post",
dataType : "jsonp",//数据类型为jsonp ,一定得是jsonp
jsonp: "callback",//服务端用于接收callback调用的function名的参数
success: function(data){
$.alert('数据加载成功');
},
error: function(){
$.alert('数据加载失败');
}
});
});
这应该够清楚了,不懂百度jsonp
比较好用的就是jsonp