CORS(跨域資源共享)是一種安全機制,允許Web應用程序在不同的域之間進行資源共享。在Java RESTful API中,我們可以使用過濾器(Filter)來實現CORS支持。
以下是一個簡單的示例,展示了如何在Java RESTful API中使用CORS過濾器:
CORSFilter.java的文件,并實現javax.servlet.Filter接口:import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletResponse;
@WebFilter(asyncSupported = true, urlPatterns = { "/*" })
public class CORSFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setHeader("Access-Control-Allow-Origin", "*");
httpResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");
httpResponse.setHeader("Access-Control-Max-Age", "3600");
httpResponse.setHeader("Access-Control-Allow-Headers", "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void destroy() {
}
}
Access-Control-Allow-Origin: 允許所有域名訪問。你可以根據需要將其更改為特定的域名。Access-Control-Allow-Methods: 允許的HTTP方法,例如GET、POST、PUT和DELETE。Access-Control-Max-Age: 預檢請求(preflight request)的緩存時間。Access-Control-Allow-Headers: 允許的自定義請求頭。現在,你的Java RESTful API應該已經支持CORS??蛻舳丝梢詮牟煌挠蛎L問你的API,而無需擔心跨域問題。