Spring Mvc服務(wù)器端跨域

如果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ě)了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容