Java 跨域問題一站式解決方案
阿新 • • 發佈:2019-07-02
在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 goOA(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端帶入使用者名稱、密碼進行判斷處理,通過返回值在前端做出不同的處理。
好了,上面是對不復雜,只是簡單的跨域跳轉的處理,很方便實