帶cookie的跨域2
1、Access-Control-Allow-Origin:具體URL
(1)Access-Control-Allow-Origin設置具體的URL,只能解決設置的具體URL跨域問題,不解決帶Cookie的所有URL跨域請求

CrossFilter代碼:
@Override
??? public void doFilter(ServletRequestservletRequest, ServletResponse servletResponse, FilterChain filterChain)throws IOException, ServletException {
??????? HttpServletResponse res =(HttpServletResponse) servletResponse;
??????? HttpServletRequest req =(HttpServletRequest) servletRequest;
??????? String origin =req.getHeader("Origin");
??????? //帶cookie請求,origin必須全匹配
//???????res.addHeader("Access-Control-Allow-Origin",origin);
???????res.addHeader("Access-Control-Allow-Origin","http://localhost:8082");
//???????res.addHeader("Access-Control-Allow-Methods","GET");
??????? // *號表示支持所有的域名(除了帶cookie請求外)
//???????res.addHeader("Access-Control-Allow-Origin","*");
??????? // *號表示支持所有的請求方法
???????res.addHeader("Access-Control-Allow-Methods","*");
???????res.addHeader("Access-Control-Allow-Headers","Content-Type");
??????? //設置OPTIONS預檢命令緩存
???????res.addHeader("Access-Control-Max-Age", "60000");
??????? //允許帶cookie請求跨域
??????? res.addHeader("Access-Control-Allow-Credentials","true");
??????? filterChain.doFilter(servletRequest,servletResponse);
??? }
(2)只有http://localhost:8082訪問才能跨域,如果是http://127.0.0.1:8082訪問,就不滿足跨域


2、修改后臺代碼,獲取請求Header中Origin

CrossFilter代碼:
???@Override
???public void doFilter(ServletRequest servletRequest, ServletResponseservletResponse, FilterChain filterChain) throws IOException, ServletException{
???????HttpServletResponse res = (HttpServletResponse) servletResponse;
???????HttpServletRequest req = (HttpServletRequest) servletRequest;
???????Stringorigin = req.getHeader("Origin");
???????//帶cookie請求,origin必須全匹配
???????res.addHeader("Access-Control-Allow-Origin",origin);
//???????res.addHeader("Access-Control-Allow-Origin","http://localhost:8082");
//???????res.addHeader("Access-Control-Allow-Methods","GET");
???????// *號表示支持所有的域名(除了帶cookie請求外)
//???????res.addHeader("Access-Control-Allow-Origin","*");
???????// *號表示支持所有的請求方法
???????res.addHeader("Access-Control-Allow-Methods","*");
???? ???res.addHeader("Access-Control-Allow-Headers","Content-Type");
???????//設置OPTIONS預檢命令緩存
???????res.addHeader("Access-Control-Max-Age", "60000");
???????//允許帶cookie請求跨域
???????res.addHeader("Access-Control-Allow-Credentials","true");
???????filterChain.doFilter(servletRequest, servletResponse);
}
http://localhost:8082訪問能跨域,http://127.0.0.1:8082訪問也能跨域

