本文主要是Spring+SpringMVC+MyBatis/MyBatis Plus架構環境,包括SpringBoot同樣适用。
1.編寫攔截器
package com.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class CORSInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object handler) throws Exception {
response.addHeader("Access-Control-Allow-Origin", "*");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response,
Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
Object handler, Exception ex) throws Exception {
}
}
2.在spring-mvc.xml檔案配置攔截器
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.interceptor.CORSInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
3.編寫html代碼測試
<html>
<head>
<meta charset="utf-8">
<script src="jquery-1.8.0.min.js"></script>
<script>
function test(){
var str="test";
$.ajax({
url:"http://192.168.1.125:8080/test-web/user/getCookie",
type:"POST",
data : {"str":str},
dataType : 'json',
success:function(data){
alert(data.returnMsg);
},error:function(XMLHttpRequest, textStatus, errorThrown){
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
alert(textStatus);
}
});
}
</script>
</head>
<body onload="test()">
</body>
在沒有配置攔截器的情況下,會出現如下結果:

配置了攔截器則會正常傳回對應的資訊。