Angularjs 跨域post数据到springmvc

时间:2023-12-20 23:38:32

先贴网上己有解决方案链接:

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的特性,移动端智能机应该都支持。