解决跨域问题

来源:互联网 发布:手机域名是什么 编辑:程序博客网 时间:2024/05/22 03:36

目前很多网站都要求前后端分离,因此ajax或者一些前端框架的http请求就必然面临跨域访问的问题,下面上几种解决方式


1、前端处理

 如jquery的jsonp   

 jQuery(document).ready(function(){
        $.ajax({
            type : "GET",
            url : "http://www.b.com/server.php&action=getmsg&callback=?",
            dataType : "json",
            jsonp: 'callback',
            success : function(json){
                $('#msg_box').html(json.msg);
                return true;
            }
        });
    });
此种方式需要在url后面加上callback=?参数
或者一些前端框架如agular自带的,等等

2、服务端处理
     如java的springmvc加上注解
  @CrossOrigin(origins = "*", maxAge = 3600)  但是这种方式只能解决get请求的方式,post请求需要继承过滤器,添加头文件如下  public class PostFilter implements Filter {    public void destroy() {    }    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {        HttpServletResponse response = (HttpServletResponse) resp;        response.setHeader("Access-Control-Allow-Origin","*");        response.setHeader("Access-Control-Allow-Methods","POST,GET,OPTIONS,DELETE");        response.setHeader("Access-Control-Max-Age","3600");        response.setHeader("Access-Control-Allow-Headers","Origin, X-Requested-With, Content-Type, Accept");        response.setHeader("","");response.setHeader("","");        chain.doFilter(req, resp);    }    public void init(FilterConfig config) throws ServletException {    }}   php文件中添加头就可以了
  header('Access-Control-Allow-Origin:http://client.runoob.com');


   

0 0
原创粉丝点击