前後端分離開發解決前端靜態資源跨域請求問題
阿新 • • 發佈:2019-02-12
前端靜態資源發起請求時首先會發送一個域請求,後端通過後再次發起get、post請求
使用過濾器對域請求授權,這裡授權了一個特殊的token請求欄位,可以根據自己的業務新增請求欄位。
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.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet Filter implementation class HttpFilter */ public class HttpFilter implements Filter { /** * Default constructor. */ public HttpFilter() { // TODO Auto-generated constructor stub } /** * @see Filter#destroy() */ public void destroy() { // TODO Auto-generated method stub } /** * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletResponse resp=(HttpServletResponse)response; HttpServletRequest rep = (HttpServletRequest) request; resp.setHeader("Access-Control-Allow-Origin", rep.getHeader("Origin")); resp.setHeader("Access-Control-Allow-Methods", "POST, GET,PUT, OPTIONS, DELETE,PUT"); resp.setHeader("Access-Control-Allow-Headers", "x-requested-with,Authorizationaccept, origin, content-type, token"); //允許跨域請求中攜帶cookie resp.setHeader("Access-Control-Allow-Credentials","true"); chain.doFilter(request, response); } /** * @see Filter#init(FilterConfig) */ public void init(FilterConfig fConfig) throws ServletException { // TODO Auto-generated method stub } }