@Override
public void intercept(Invocation inv) {
CrossOrigin cross = inv.getController().getClass().getAnnotation(CrossOrigin.class);
if (cross != null) {
handler(inv.getController().getResponse());
inv.invoke();
return;
}
cross = inv.getMethod().getAnnotation(CrossOrigin.class);
if (cross != null) {
handler(inv.getController().getResponse());
inv.invoke();
return;
}
inv.invoke();
}
private void handler(HttpServletResponse response) {
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers",
"Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
}
注解:
@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface CrossOrigin {
}
使用方式:
在config里面添加 拦截器
然后在需要使用的Controller上加上@CrossOrigin注解即可