我在跨域中遇到的问题,开始用户了是apache有个跨域的包,使用出了问题,我也没有搞清楚什么怎么回事,
又换了一种跨域方式,就是在自己用了一个拦截器,又来也出问题了,这就让我抓狂了,仔细分析是因为,前端请求时在haeder中加了自定义的 头 “access-token” 导致跨域失败
具体实现
@Override
public void configInterceptor(Interceptors me) {
// TODO Auto-generated method stub //启动拦截器
me.addGlobalActionInterceptor(new GlobalActionCORSInterceptor());//跨域
}
public class GlobalActionCORSInterceptor implements Interceptor {
/**
* 跨域CORS
*/
@Override
public void intercept(Invocation inv) {
Controller c = inv.getController();
c.getResponse().addHeader("Access-Control-Allow-Origin","*");
c.getResponse().addHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");//允许跨域的方法
c.getResponse().addHeader("Access-Control-Allow-Headers","access-token, mobile, power-by, token, Accept, Origin, X-Requested-With, Content-Type, Last-Modified");//表示允许的额外header
c.getResponse().addHeader("Access-Control-Max-Age", "3600");
c.getResponse().addHeader("Access-Control-Allow-Credentials", "true");//必须为true
//多文件上传 getfiles必须放在最前面 否则无法取到参数
if (StrKit.notBlank(c.getResponse().getContentType()) && c.getResponse().getContentType().contains("multipart/form-data")) {
//resp.getFiles();
c.getFile();
c.getFiles();
}
inv.invoke();
}
}