需求:
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不知道是否会出问题...