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