首页 > 技术文章 > Angularjs 跨域post数据到springmvc

jackicalSong 2016-04-19 13:56 原文

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

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

 

推荐阅读