如果mvc框架是spring4.2以上的話,一個(gè)@CrossOrigin就可以搞定。將@CrossOrigin加到Controller上,那么這個(gè)Controller所有的請(qǐng)求都是支持跨域的,將@CrossOrigin加到請(qǐng)求方法上,那么這個(gè)請(qǐng)求是支持跨域的。
Spring mvc服務(wù)器mvc框架spring4.2以下服務(wù)器端跨域需要些filter
@Override
public void doFilter(ServletRequest request, ServletResponse responseabc, FilterChain chain)
throws IOException, ServletException {
HttpServletResponse response =(HttpServletResponse) responseabc;
/*
*/
response.setHeader("Access-Control-Allow-Origin", "Authentication");
/*
* 指明資源可以被請(qǐng)求的方式有哪些(一個(gè)或者多個(gè)). 這個(gè)響應(yīng)頭信息在客戶端發(fā)出預(yù)檢請(qǐng)求的時(shí)候會(huì)被返回
*/
response.setHeader("Access-Control-Allow-Methods", "GET,POST,OPTIONS,PUT,DELETE");
/*
* 設(shè)置瀏覽器允許訪問(wèn)的服務(wù)器的頭信息的白名單
*/
response.setHeader("Access-Control-Allow-Headers", "Origin,X-Requested-With,Content-Type,Authorization,Accept, No-Cache, If-Modified-Since,Last-Modified, Cache-Control, Expires, X-E4M-With,ticket");
/*
* 默認(rèn)情況下,跨源請(qǐng)求不提供憑據(jù)(cookie、HTTP認(rèn)證及客戶端SSL證明等)。
* 通過(guò)將withCredentials屬性設(shè)置為true,可以指定某個(gè)請(qǐng)求應(yīng)該發(fā)送憑據(jù)。如果服務(wù)器接收帶憑據(jù)的請(qǐng)求,會(huì)用下面的HTTP頭部來(lái)響應(yīng)
* 如果發(fā)送的是帶憑據(jù)的請(qǐng)求,但服務(wù)器的相應(yīng)中沒(méi)有包含這個(gè)頭部,那么瀏覽器就不會(huì)把相應(yīng)交給JavaScript(于是,responseText中將是空字符串,status的值為0,而且會(huì)調(diào)用onerror()事件處理程序)
*/
response.setHeader("Access-Control-Allow-Credentials", "true");
/*
* 一次預(yù)請(qǐng)求的結(jié)果的有效時(shí)間(秒),在該時(shí)間內(nèi)不再發(fā)送預(yù)請(qǐng)求
*/
response.setHeader("Access-Control-Max-Age", "2592000");
chain.doFilter(request, response);
}
同事web.xml需要配置filter,這里復(fù)制不上來(lái)就不寫(xiě)了