日期:2014-05-16  浏览次数:20761 次

ajax跨域提交以及session丢失问题
需求:
A域有注册功能,页面为html,注册需要AJAX到B域验证用户名.
水平有限,知识匮乏,试了很多次才发现$.post(),并不能支持跨域数据提交,提交过去的话,数据是空的,后来发现$.$.getJSON可以支持
var paramUser={'registDO.id':id};
$.getJSON(
			"http://XXXXXXX:8080/user/user_regist.do?jsoncallback=?",
			paramUser,	
			function(json){
				if(json.flag=='ok'){
					...
                                        ...
				}else{
					...
                                       ...
				}		
			}
		);	

java端返回数据写法
String jsoncallback=Struts2Utils.getParameter("jsoncallback");
PrintWriter out = Struts2Utils.getResponse().getWriter();
out.print(jsoncallback+"({flag:'ok');

注意ok要加单引号,数字则不用
摸索了老半天,这部分终于做好了,然后注册成功跳转页面,发现用户不是登陆状态,跟进代码,发现session丢失了...崩溃ING~
在网上查了下资料,在action中加上下面代码,问题解决
Struts2Utils.getResponse().setHeader("P3P","CP=CAO PSA OUR");  

不过这样写有个安全隐患,A域能控制B域的session,那如果有恶意程序来破坏更改Session不知道是否会出问题...