过滤器 处理跨域

it2026-04-20  3

过滤器

package com.zjht.zuulserver.filter; import com.google.gson.Gson; import com.zjht.zuulserver.model.ResultInfo; import com.zjht.zuulserver.util.ValidateUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.annotation.Order; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; @Order(value = 1) @WebFilter(filterName = "accessfilter",urlPatterns={"/*"},asyncSupported = true) public class AccessFilter implements Filter { @Value("${rsa.pubkey}") private String pubkey; @Value("${rsa.license}") private String license; @Value("${license.flag}") private String licenseFlag; @Autowired HttpServletRequest httpServletRequest; @Autowired HttpServletResponse httpServletResponse; @Override public void init(FilterConfig filterConfig) throws ServletException { //System.out.println("init ..."); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletResponse response = (HttpServletResponse) servletResponse; HttpServletRequest request = (HttpServletRequest) servletRequest; // RequestContext ctx = RequestContext.getCurrentContext(); // String sessionId = httpServletRequest.getSession().getId(); // ctx.addZuulRequestHeader("Cookie", "SESSION=" + sessionId); // ctx.setSendZuulResponse(true);// 对该请求进行路由 // ctx.setResponseStatusCode(200); // 返回200正确响应 if(licenseFlag.equals("true")){ boolean isok = ValidateUtil.validate(pubkey,license); if (!isok){ ResultInfo resultInfo = new ResultInfo(); System.out.println("license已过期"); resultInfo.setCode(0); resultInfo.setMsg("license已过期"); servletResponse.setContentType("text/json;charset=utf-8"); PrintWriter out = servletResponse.getWriter(); Gson gson = new Gson(); out.write(gson.toJson(resultInfo)); out.flush(); out.close(); }else{ String origin = request.getHeader("Origin"); if (origin == null) { String referer = request.getHeader("Referer"); if (referer != null) { origin = referer.substring(0, referer.indexOf("/", 7)); } } response.addHeader("Access-Control-Allow-Origin", origin); // 允许指定域访问跨域资源 String allowMethod = request.getHeader("Access-Control-Request-Method"); String allowHeaders = request.getHeader("Access-Control-Request-Headers"); System.err.println("========== "+allowHeaders+" =========="); if (request.getMethod().toLowerCase().equals("options")) { response.addHeader("Access-Control-Allow-Credentials", "true"); response.addHeader("Access-Control-Allow-Methods", "POST,GET,OPTIONS,PUT,DELETE"); response.addHeader("Access-Control-Allow-Headers", "cache-control,Content-Type,hash-referer,x-requested-with,Authorization,Accept,key,ts,sign"); return; } filterChain.doFilter(servletRequest,response); } }else{ String origin = request.getHeader("Origin"); if (origin == null) { String referer = request.getHeader("Referer"); if (referer != null) { origin = referer.substring(0, referer.indexOf("/", 7)); } } response.addHeader("Access-Control-Allow-Origin", origin); // 允许指定域访问跨域资源 String allowMethod = request.getHeader("Access-Control-Request-Method"); String allowHeaders = request.getHeader("Access-Control-Request-Headers"); System.err.println("========== "+allowHeaders+" =========="); if (request.getMethod().toLowerCase().equals("options")) { response.addHeader("Access-Control-Allow-Credentials", "true"); response.addHeader("Access-Control-Allow-Methods", "POST,GET,OPTIONS,PUT,DELETE"); response.addHeader("Access-Control-Allow-Headers", "cache-control,Content-Type,hash-referer,x-requested-with,Authorization,Accept,key,ts,sign"); return; } filterChain.doFilter(servletRequest,response); } } }
最新回复(0)