先贴网上己有解决方案链接:
http://www.tuicool.com/articles/umymmqY (讲的是springmvc怎么做才可以跨域)
http://my.oschina.net/zchuanzhao/blog/515059 (讲的是怎么使用Angularjs 将post数据提交到服务端)
在结合上面两篇文章之后,我在做的时候发现,angularjs在提交post时有些问题。必须要这么写才行。
return $http({ method:'POST', url:apibaseurl+'/**/checkUser', data:'name='+credentials.name+'&pwd='+credentials.password, //contentType: 'application/json', 'application/x-www-form-urlencoded' headers:{ 'Content-Type': 'application/x-www-form-urlencoded' } }).success(function(data){ return data; }).error(function(data){ return null; })
即post的数据不能以json的形式发过去,若以json的行式发的话,做报403之类的异常,改变contenttype的类型为application/json时,就会引发不能跨域异常。最后将post的数据改成字符串的形式才通过。
下面贴下服务端取数据的代码
@RequestMapping(value="/checkUser") public User checkUser(HttpServletRequest request){ String reqName=StringHelper.ConvertString(request.getParameter("name"),"");// request.getParameter("name"); String reqPwd=StringHelper.ConvertString(request.getParameter("pwd"),""); return CheckUserLogin(reqName, reqPwd); }
小节下:
服务端,将按照第一个链接内的内容,创建一个 filter,重写其 中方法,在web.xml中加入这个过滤器。
客户端,在做请求时加入“
headers:{
'Content-Type': 'application/x-www-form-urlencoded'
}
”
这个headers参数很重要,少了就不行。
【转载请标注,From http://www.cnblogs.com/jackicalSong/】
注:听说跟浏览器版本有点关系,网上说这种跨域是H5的特性,移动端智能机应该都支持。