Java 跨域问题一站式解决方案

原创
2019/07/02 10:12
阅读数 125

    在web项目开发中,经常会遇到跨域的问题(何为跨域这里就不做解释了),百度搜索也有不少的解决方案(部分过于繁琐,未用到)。这里将自己的处理方式和大家分享下,希望能帮到大家。

    (1)js端处理:通常是以ajax的方式,以下是处理代码

$.ajax({
   type: "GET",
   url: 'common/goBD.do',
   xhrFields: {withCredentials: true },
   crossDomain: true,
   success: function(data){
        window.open("http://www.baidu.com");
   }
});

        这里主要注意下该代码:xhrFields: {withCredentials: true },不可缺少;url是访问服务端地址,成功返回后跳转百度页面(新打开tab页,当然也可以在原有的页面上打开)。

    (2)服务端处理:通过设置response头部信息的方式,以下是处理代码

@RequestMapping(value="/goBD")
public void goBD(HttpServletResponse response,HttpServletRequest request) throws IOException{
    String msg = "";
    String result = "{\"msg\":"+msg+"}";
    PrintWriter out = response.getWriter();
    response.setHeader("Access-Control-Allow-Credentials", "true");
    response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
    response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
    response.setHeader("Access-Control-Max-Age", "0");
    response.setCharacterEncoding("utf-8");
    out = response.getWriter();
    out.write(result);
    out.flush();
    out.close();
}

    这里只是简单的处理了下response头部信息,并没有加入其他的,若有其他的判断如登录时可在js端带入用户名、密码进行判断处理,通过返回值在前端做出不同的处理。

    好了,上面的不复杂,只是简单的跨域跳转的处理,很方便实用,亲测可用。

展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部