All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.dennisit.vplus.data.interceptor.CrossDomainInterceptor Maven / Gradle / Ivy

There is a newer version: 2.0.8
Show newest version
package com.github.dennisit.vplus.data.interceptor;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Slf4j
public class CrossDomainInterceptor extends HandlerInterceptorAdapter {

    private static final String[] allowOrigins = new String[]{"wuyushuo.com", "un-zone.com", "huntswork.com", "hunts.work"};

    public CrossDomainInterceptor() {

    }

    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        if (!(handler instanceof HandlerMethod)) {
            return true;
        } else {
            HandlerMethod handlerMethod = (HandlerMethod) handler;
            CrossDomain crossDomain = (CrossDomain) handlerMethod.getMethodAnnotation(CrossDomain.class);
            if (crossDomain != null && crossDomain.isCrossDomain()) {
                this.allowOrigin(request, response);
            }

            return true;
        }
    }

    private void allowOrigin(HttpServletRequest request, HttpServletResponse response) {
        try {
            String originHeader = request.getHeader("Origin");
            if (StringUtils.isBlank(originHeader)) {
                return;
            }

            String header = originHeader.trim();
            int indexOf = header.indexOf("://");
            if (indexOf != -1) {
                header = header.substring(indexOf + 3);
                indexOf = header.indexOf("/");
                if (indexOf != -1) {
                    header = header.substring(0, indexOf);
                }
            }

            String[] arr$ = allowOrigins;
            int len$ = arr$.length;

            for (int i$ = 0; i$ < len$; ++i$) {
                String origin = arr$[i$];
                if (header.endsWith(origin)) {
                    response.setHeader("Access-Control-Allow-Credentials", "true");
                    response.setHeader("Access-Control-Allow-Origin", originHeader);
                    break;
                }
            }
        } catch (Exception var10) {
            log.error("fetch header origin error", var10);
        }

    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy