jfinal 的中使用跨域的方式

我在跨域中遇到的问题,开始用户了是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();


    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章