我在跨域中遇到的問題,開始用戶了是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();
}
}