com.github.dennisit.vplus.data.interceptor.CrossDomainInterceptor Maven / Gradle / Ivy
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);
}
}
}