在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