ajax 跨域请求+spring mvc篇

  有时候前后台做数据交互,会遇到烦人的跨域请求问题,如果你还是一枚编程小白来说,无疑来说是很痛苦的事。当然网上也肯定会有一些解决方法。但自身实力有限,不一定会看的懂,能把问题解决了。
  一般的解决跨域问题解决方法主要有:

   A:利用jsonp ,(JSONP是JSON with Padding的略称。它是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问(这仅仅是JSONP简单的实现形式)。--来源百度).当然,我猜你可能没有看懂。简单来说就是在请求数据时,利用callback创建一个回调函数,然后在远程服务上调用这个函数并且将JSON 数据形式作为参数传递,完成回调。并且在html页面(前台)修改代码,也要在后台修改代码(增加callback)。这样才能完成数据交互。

(解决办法:http://www.cnblogs.com/chopper/archive/2012/03/24/2403945.html)

对于新手而言,前后台同时修改代码可能有一点点麻烦。这里主要是介绍是下面一种方法,轻松有效便捷。

  B:利用过滤器(filter)和web.xml.

  首先你要在filter文件夹里创建一个类:代码为:(我的类名为AjaxLogin)


public class AjaxFilter implements javax.servlet.Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletResponse httpServletResponse=(HttpServletResponse)servletResponse;
        httpServletResponse.setHeader("Access-Control-Allow-Origin", "*");
        httpServletResponse.setHeader("Access-Control-Allow-Headers", "Authentication");
        filterChain.doFilter(servletRequest,httpServletResponse);
    }

    @Override
    public void destroy() {

    }
}

配置web.xml:



 只要完成上面两步就ok了,你完全可以一键复制我的代码到你的文件中。

两种方法对比:

1.jsonp的方法要修改前后台代码,相比第2种方法则稍微麻烦。

2.jsonp的方法只能针对某一个ajax请求,第2种方法是针对所有的ajax的请求。配置一次,就无须配置第2次。

3.jsonp的方法在某些方面来说较为第二种方法安全,但也安全不了哪里去。



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值