lxw
2020-06-27 8aee9dfec05e1a9333abf03f1bd35dd7cfa9d352
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package com.fgkj.Filters;
 
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
 
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;
 
import org.omg.CORBA.Request;
 
import com.fgkj.actions.ActionUtil;
 
public class CrossDomainLimitFilter implements Filter{
    public static final int max_connect_count = 10;
    
    public final static String CROSS_DOMAIN_KEY    = "44c4a294cb66d13727c14b065dbe8548";        //跨域请求 key
        
    public void doFilter(ServletRequest req, ServletResponse resp,
            FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request=(HttpServletRequest)req;
        HttpServletResponse response =(HttpServletResponse)resp;
        String URL=request.getRequestURI();
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=utf-8");
        
        //非跨域请求
        isAlowCrossDomain(response,request);
        chain.doFilter(request, response);
        
    }
 
    public void init(FilterConfig arg0) throws ServletException {
        
    }
 
    public void destroy() {
        
    }
    
    /**
     * 允许跨域访问
     * @param response
     */
    public void isAlowCrossDomain(HttpServletResponse response,HttpServletRequest request){
         // 设置允许多个域名请求
        String[] allowDomains = {"http://localhost:8919","http://localhost:8080"};
        Set allowOrigins = new HashSet(Arrays.asList(allowDomains));
       // if (Arrays.asList(Constants.ALLOW_DOMAIN).contains(originHeader)) {
        String originHeads = request.getHeader("Origin");
        if(allowOrigins.contains(originHeads)){
            //设置允许跨域的配置
            // 这里填写你允许进行跨域的主机ip(正式上线时可以动态配置具体允许的域名和IP)
            response.setHeader("Access-Control-Allow-Origin", originHeads);
        }
         /*String ip=request.getRemoteAddr();
         //String originHeads = request.getHeader("Host"); 
         String originHeads =ip+":8080";
         System.out.println(originHeads);*/
         response.setHeader("Access-Control-Allow-Origin", originHeads);
        //response.setHeader("Access-Control-Allow-Origin", "*");                //允许跨域访问
        response.setHeader("Access-Control-Allow-Headers", "X-Requested-With,content-type,token");
        response.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH");
        response.setHeader("Access-Control-Allow-Credentials", "true");
    }
    
    public static void main(String[] args) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(sdf.format(new Date()));
    }
}