Java 跨域問題一站式解決方案

    在web項目開發中,常常會遇到跨域的問題(何爲跨域這裏就不作解釋了),百度搜索也有很多的解決方案(部分過於繁瑣,未用到)。這裏將本身的處理方式和你們分享下,但願能幫到你們。前端

    (1)js端處理:一般是以ajax的方式,如下是處理代碼web

$.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頁,固然也能夠在原有的頁面上打開)。ajax

    (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端帶入用戶名、密碼進行判斷處理,經過返回值在前端作出不一樣的處理。app

    好了,上面的不復雜,只是簡單的跨域跳轉的處理,很方便實用,親測可用。url

相關文章
相關標籤/搜索